<commit_before>define([
      'knockout'
    , '../util'
    , 'text!./job_stage.html'
], function(ko, util, template) {
    function JobStageModel(params) {
        this.slug = util.param(params['slug'])
        this.job  = util.param(params['job'])
        this.success = util.param(params['success'])

        this.lines = ko.observableArray([ko.observable('')])

        this.updateData = function(data) {
            message_lines = data.split('\n')
            if (this.lines().length === 1) {
                while (message_lines.indexOf('') === 0) {
                    message_lines.shift()<commit_msg>Defer processing observable for log lines<commit_after>define([
      'knockout'
    , '../util'
    , 'text!./job_stage.html'
], function(ko, util, template) {
    function JobStageModel(params) {
        this.slug = util.param(params['slug'])
        this.job  = util.param(params['job'])
        this.success = util.param(params['success'])

        this.lines = ko.observableArray([ko.observable('')]).extend({'deferred': true})

        this.updateData = function(data) {
            message_lines = data.split('\n')
            if (this.lines().length === 1) {
                while (message_lines.indexOf('') === 0) {
                    message_lines.shift()
{'fraction_non_alphanumeric': 0.1707126076742365, 'fraction_numerical': 0.0031323414252153485, 'mean_word_length': 2.363157894736842, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6946979', 'n_tokens_mistral': 386, 'n_tokens_neox': 376, 'n_words': 61}