runeblog 0.2.89 → 0.2.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/blog +9 -6
- data/empty_view/themes/standard/{blog → banner}/banner.lt3 +0 -0
- data/empty_view/themes/standard/banner/{about.lt3 → navbar/about.lt3} +0 -0
- data/empty_view/themes/standard/banner/{contact.lt3 → navbar/contact.lt3} +0 -0
- data/empty_view/themes/standard/banner/navbar/faq.lt3 +1 -0
- data/empty_view/themes/standard/banner/{list.data → navbar/list.data} +0 -0
- data/empty_view/themes/standard/blog/generate.lt3 +1 -1
- data/empty_view/themes/standard/global.lt3 +1 -1
- data/empty_view/themes/standard/post/index.lt3 +8 -8
- data/empty_view/themes/standard/widgets/links/links.rb +1 -1
- data/empty_view/themes/standard/widgets/news/news.rb +1 -1
- data/empty_view/themes/standard/widgets/pages/pages.rb +2 -2
- data/empty_view/themes/standard/widgets/pinned/pinned.rb +1 -1
- data/lib/helpers-blog.rb +20 -56
- data/lib/helpers-repl.rb +3 -13
- data/lib/liveblog.rb +17 -37
- data/lib/lowlevel.rb +73 -0
- data/lib/publish.rb +6 -22
- data/lib/repl.rb +5 -15
- data/lib/runeblog.rb +43 -9
- data/lib/runeblog_version.rb +1 -16
- data/test/austin.rb +0 -1
- metadata +8 -9
- data/empty_view/remote/banner/austin-pano.jpg +0 -0
- data/empty_view/themes/standard/banner/faq.lt3 +0 -1
- data/lib/default.rb +0 -31
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 7ed9580d074b2ce228aff385bbe22e907a9ae0c330f625aa2d42ee58464a1d3b
         | 
| 4 | 
            +
              data.tar.gz: 0ce0642e8b2f0026cca4133916ff0dd3f992bb1ae8cb89e3304d90221d8195a8
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 84d30bada582bd3393e075a1cba653ec11e719941c675d1a9753d6dbf921643137e6096205b5120c91f385e6d9cb4a1e823440607b1db5ee23232c87885128bc
         | 
| 7 | 
            +
              data.tar.gz: 0b0207066da6493400d66e9473c00659bef4b4169fb26cdbe554d220a59778579bd06207643516a409df39247fa8b263ae77229c16344912e81a8befb0237c6b
         | 
    
        data/bin/blog
    CHANGED
    
    | @@ -25,8 +25,8 @@ end | |
| 25 25 | 
             
            def get_universal
         | 
| 26 26 | 
             
              univ = "#{@blog.root}/data/universal.lt3"
         | 
| 27 27 | 
             
              if yesno("Faster initial setup? (no: edit universal.lt3)")
         | 
| 28 | 
            -
                author = ask("Author name: ")
         | 
| 29 | 
            -
                site   = ask("Site/domain: ")
         | 
| 28 | 
            +
                author = ask!("Author name: ")
         | 
| 29 | 
            +
                site   = ask!("Site/domain: ")
         | 
| 30 30 | 
             
                # Now stash it...
         | 
| 31 31 | 
             
                str = File.read(univ)
         | 
| 32 32 | 
             
                str = str.gsub(/AUTHOR/, author)
         | 
| @@ -41,8 +41,8 @@ def get_global | |
| 41 41 | 
             
              if yesno("Faster view setup? (no: edit global.lt3)")
         | 
| 42 42 | 
             
                view_name = ask("\nFilename: ")
         | 
| 43 43 | 
             
                @blog.create_view(view_name)   # call change_view??
         | 
| 44 | 
            -
                title     = ask("View title: ")
         | 
| 45 | 
            -
                subtitle  = ask("Subtitle  : ")
         | 
| 44 | 
            +
                title     = ask!("View title: ")
         | 
| 45 | 
            +
                subtitle  = ask!("Subtitle  : ")
         | 
| 46 46 | 
             
                gname = "#{@blog.root}/views/#{view_name}/themes/standard/global.lt3" 
         | 
| 47 47 | 
             
                text = File.read(gname)
         | 
| 48 48 | 
             
                text = text.gsub(/VIEW_NAME/,     view_name)
         | 
| @@ -50,7 +50,7 @@ def get_global | |
| 50 50 | 
             
                text = text.gsub(/VIEW_SUBTITLE/, subtitle)
         | 
| 51 51 | 
             
                File.write(gname, text)
         | 
| 52 52 | 
             
              else
         | 
| 53 | 
            -
                view_name = ask("\nFilename: ")
         | 
| 53 | 
            +
                view_name = ask!("\nFilename: ")
         | 
| 54 54 | 
             
                @blog.create_view(view_name)   # call change_view??
         | 
| 55 55 | 
             
                vim_params = '-c ":set hlsearch" -c ":hi Search ctermfg=2 ctermbg=6" +/"\(VIEW_.*\|SITE.*\)"'
         | 
| 56 56 | 
             
                edit_file(@blog.view.dir/"themes/standard/global.lt3", vim: vim_params)
         | 
| @@ -146,7 +146,10 @@ end | |
| 146 146 |  | 
| 147 147 | 
             
            major, minor = RUBY_VERSION.split(".").values_at(0,1)
         | 
| 148 148 | 
             
            ver = major.to_i*10 + minor.to_i
         | 
| 149 | 
            -
             | 
| 149 | 
            +
            unless ver >= 24
         | 
| 150 | 
            +
              RubyText.stop
         | 
| 151 | 
            +
              abort "Need Ruby 2.4 or greater" 
         | 
| 152 | 
            +
            end
         | 
| 150 153 |  | 
| 151 154 | 
             
            include RuneBlog::Helpers  # for try_read_config
         | 
| 152 155 |  | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            .include ../../widgets/pages/faq.lt3
         | 
| 
            File without changes
         | 
| @@ -6,19 +6,19 @@ | |
| 6 6 | 
             
            . likely be the place.
         | 
| 7 7 | 
             
            . --------------------------------------------------
         | 
| 8 8 |  | 
| 9 | 
            -
            .mixin liveblog
         | 
| 10 | 
            -
            . ^ get rid of this later
         | 
| 11 | 
            -
             | 
| 12 9 | 
             
            .post 0
         | 
| 13 10 |  | 
| 14 | 
            -
            .title  | 
| 11 | 
            +
            .title This is my title
         | 
| 15 12 | 
             
            .pubdate 2019-07-09
         | 
| 16 | 
            -
            .views  | 
| 13 | 
            +
            .views stuff 
         | 
| 17 14 | 
             
            .tags 
         | 
| 18 15 |  | 
| 19 16 | 
             
            .teaser
         | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 17 | 
            +
            This is only a short excerpt from the top of the blog post. 
         | 
| 22 18 | 
             
            .end
         | 
| 23 | 
            -
             | 
| 19 | 
            +
             | 
| 20 | 
            +
            And now we continue the post.
         | 
| 21 | 
            +
            Do we have anything to say?
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            Apparently not much.
         | 
| 24 24 |  | 
| @@ -4,12 +4,12 @@ | |
| 4 4 |  | 
| 5 5 | 
             
            class ::RuneBlog::Widget
         | 
| 6 6 | 
             
              class Pages
         | 
| 7 | 
            -
                Type, Title = "pages", "Pages"
         | 
| 7 | 
            +
                Type, Title = "pages", "My Pages"
         | 
| 8 8 |  | 
| 9 9 | 
             
                def initialize(repo)
         | 
| 10 10 | 
             
                  @blog = repo
         | 
| 11 11 | 
             
                  @datafile = "list.data"
         | 
| 12 | 
            -
                  @lines =  | 
| 12 | 
            +
                  @lines = _get_data(@datafile)
         | 
| 13 13 | 
             
                  @data = @lines.map {|x| x.chomp.split(/, */, 2) }
         | 
| 14 14 | 
             
                end
         | 
| 15 15 |  | 
    
        data/lib/helpers-blog.rb
    CHANGED
    
    | @@ -3,20 +3,15 @@ require 'fileutils' | |
| 3 3 |  | 
| 4 4 | 
             
            require 'processing'
         | 
| 5 5 |  | 
| 6 | 
            -
             | 
| 6 | 
            +
            require 'lowlevel'
         | 
| 7 7 |  | 
| 8 | 
            -
             | 
| 9 | 
            -
                log!(enter: __method__, args: [src, dst], level: 2)
         | 
| 10 | 
            -
                cmd = "cp #{src} #{dst} 2>/dev/null"
         | 
| 11 | 
            -
                rc = system!(cmd)
         | 
| 12 | 
            -
                puts "    Failed: #{cmd} - from #{caller[0]}" unless rc
         | 
| 13 | 
            -
              end
         | 
| 8 | 
            +
            module RuneBlog::Helpers
         | 
| 14 9 |  | 
| 15 | 
            -
              def  | 
| 16 | 
            -
                 | 
| 17 | 
            -
                 | 
| 18 | 
            -
                 | 
| 19 | 
            -
                 | 
| 10 | 
            +
              def quit_RubyText
         | 
| 11 | 
            +
                return unless defined? RubyText
         | 
| 12 | 
            +
                sleep 6
         | 
| 13 | 
            +
                RubyText.stop
         | 
| 14 | 
            +
                exit
         | 
| 20 15 | 
             
              end
         | 
| 21 16 |  | 
| 22 17 | 
             
              def get_repo_config
         | 
| @@ -54,7 +49,7 @@ module RuneBlog::Helpers | |
| 54 49 | 
             
                puts "Can't read vars file '#{file}': #{err}"
         | 
| 55 50 | 
             
                puts err.backtrace.join("\n")
         | 
| 56 51 | 
             
                puts "dir = #{Dir.pwd}"
         | 
| 57 | 
            -
                 | 
| 52 | 
            +
                stop_RubyText
         | 
| 58 53 | 
             
              end
         | 
| 59 54 |  | 
| 60 55 | 
             
              def read_config(file, *syms)
         | 
| @@ -80,7 +75,7 @@ module RuneBlog::Helpers | |
| 80 75 | 
             
                puts "Can't read config file '#{file}': #{err}"
         | 
| 81 76 | 
             
                puts err.backtrace.join("\n")
         | 
| 82 77 | 
             
                puts "dir = #{Dir.pwd}"
         | 
| 83 | 
            -
                 | 
| 78 | 
            +
                stop_RubyText
         | 
| 84 79 | 
             
              end
         | 
| 85 80 |  | 
| 86 81 | 
             
              def try_read_config(file, hash)
         | 
| @@ -98,26 +93,27 @@ module RuneBlog::Helpers | |
| 98 93 | 
             
                end
         | 
| 99 94 | 
             
              end
         | 
| 100 95 |  | 
| 101 | 
            -
              def  | 
| 96 | 
            +
              def retrieve_views   # read from filesystem
         | 
| 102 97 | 
             
                log!(enter: __method__, level: 3)
         | 
| 103 98 | 
             
                dirs = subdirs("#@root/views/").sort
         | 
| 104 99 | 
             
                dirs.map {|name| RuneBlog::View.new(name) }
         | 
| 105 100 | 
             
              end
         | 
| 106 101 |  | 
| 107 | 
            -
              def write_repo_config(root: "#{Dir.pwd}/.blogs", view:  | 
| 102 | 
            +
              def write_repo_config(root: "#{Dir.pwd}/.blogs", view: nil, editor: "/usr/local/bin/vim")
         | 
| 103 | 
            +
                view ||= File.read("#{root}/data/VIEW").chomp rescue "[no view]"
         | 
| 108 104 | 
             
                File.write(root + "/data/ROOT",   root + "\n")
         | 
| 109 105 | 
             
                File.write(root + "/data/VIEW",   view.to_s + "\n")
         | 
| 110 106 | 
             
                File.write(root + "/data/EDITOR", editor + "\n")
         | 
| 111 107 | 
             
              end
         | 
| 112 108 |  | 
| 113 | 
            -
              def new_dotfile(root: ".blogs", current_view: "test_view", editor: "vi")
         | 
| 114 | 
            -
             | 
| 115 | 
            -
             | 
| 116 | 
            -
             | 
| 117 | 
            -
             | 
| 118 | 
            -
             | 
| 119 | 
            -
             | 
| 120 | 
            -
              end
         | 
| 109 | 
            +
              # def new_dotfile(root: ".blogs", current_view: "test_view", editor: "vi")
         | 
| 110 | 
            +
              #   log!(enter: __method__, args: [root, current_view, editor], level: 3)
         | 
| 111 | 
            +
              #   root = Dir.pwd + "/" + root
         | 
| 112 | 
            +
              #   x = OpenStruct.new
         | 
| 113 | 
            +
              #   x.root, x.current_view, x.editor = root, current_view, editor
         | 
| 114 | 
            +
              #   write_config(x, root + "/" + RuneBlog::ConfigFile)
         | 
| 115 | 
            +
              #   write_repo_config
         | 
| 116 | 
            +
              # end
         | 
| 121 117 |  | 
| 122 118 | 
             
              def new_sequence
         | 
| 123 119 | 
             
                log!(enter: __method__, level: 3)
         | 
| @@ -145,38 +141,6 @@ module RuneBlog::Helpers | |
| 145 141 | 
             
                files
         | 
| 146 142 | 
             
              end
         | 
| 147 143 |  | 
| 148 | 
            -
              def create_dirs(*dirs)
         | 
| 149 | 
            -
                log!(enter: __method__, args: [*dirs], level: 3)
         | 
| 150 | 
            -
                dirs.each do |dir|
         | 
| 151 | 
            -
                  dir = dir.to_s  # symbols allowed
         | 
| 152 | 
            -
                  next if Dir.exist?(dir)
         | 
| 153 | 
            -
                  cmd = "mkdir -p #{dir} >/dev/null"
         | 
| 154 | 
            -
                  result = system!(cmd) 
         | 
| 155 | 
            -
                  raise CantCreateDir(dir) unless result
         | 
| 156 | 
            -
                end
         | 
| 157 | 
            -
              end
         | 
| 158 | 
            -
             | 
| 159 | 
            -
              def interpolate(str, bind)
         | 
| 160 | 
            -
                log!(enter: __method__, args: [str, bind], level: 3)
         | 
| 161 | 
            -
                wrap = "<<-EOS\n#{str}\nEOS"
         | 
| 162 | 
            -
                eval wrap, bind
         | 
| 163 | 
            -
              end
         | 
| 164 | 
            -
             | 
| 165 | 
            -
              def error(err)  # Hmm, this is duplicated
         | 
| 166 | 
            -
                log!(str: "duplicated method", enter: __method__, args: [err], level: 2)
         | 
| 167 | 
            -
                str = "\n  Error: #{err}"
         | 
| 168 | 
            -
                puts str
         | 
| 169 | 
            -
                puts err.backtrace.join("\n")
         | 
| 170 | 
            -
              end
         | 
| 171 | 
            -
             | 
| 172 | 
            -
              def dump(obj, name)
         | 
| 173 | 
            -
                log!(enter: __method__, args: [obj, name], level: 3)
         | 
| 174 | 
            -
                File.write(name, obj)
         | 
| 175 | 
            -
              end
         | 
| 176 144 | 
             
            end
         | 
| 177 145 |  | 
| 178 | 
            -
            def dump(obj, name)      # FIXME scope
         | 
| 179 | 
            -
              log!(str: "scope problem", enter: __method__, args: [obj, name], level: 3)
         | 
| 180 | 
            -
              File.write(name, obj)
         | 
| 181 | 
            -
            end
         | 
| 182 146 |  | 
    
        data/lib/helpers-repl.rb
    CHANGED
    
    | @@ -109,26 +109,16 @@ module RuneBlog::REPL | |
| 109 109 | 
             
                end
         | 
| 110 110 | 
             
                meth = found || :cmd_INVALID
         | 
| 111 111 | 
             
                params = cmd if meth == :cmd_INVALID
         | 
| 112 | 
            -
            # puts "choose: #{[meth, params].inspect}"
         | 
| 113 112 | 
             
                [meth, params]
         | 
| 114 113 | 
             
              end
         | 
| 115 114 |  | 
| 116 | 
            -
              def error(err)  # Hmm, this is duplicated
         | 
| 117 | 
            -
                str = "\n  Error: #{err}"
         | 
| 118 | 
            -
                puts str
         | 
| 119 | 
            -
                puts err.backtrace.join("\n")
         | 
| 120 | 
            -
              end
         | 
| 121 | 
            -
             | 
| 122 115 | 
             
              def ask(prompt, meth = :to_s)
         | 
| 123 116 | 
             
                print prompt
         | 
| 124 | 
            -
                 | 
| 125 | 
            -
                str.chomp!
         | 
| 126 | 
            -
                str.send(meth)
         | 
| 117 | 
            +
                gets.chomp.send(meth)
         | 
| 127 118 | 
             
              end
         | 
| 128 119 |  | 
| 129 | 
            -
              def  | 
| 130 | 
            -
                 | 
| 131 | 
            -
                gets.chomp.upcase[0] == "Y"
         | 
| 120 | 
            +
              def ask!(prompt, meth = :to_s)
         | 
| 121 | 
            +
                ask(fx(prompt, :bold), meth)
         | 
| 132 122 | 
             
              end
         | 
| 133 123 |  | 
| 134 124 | 
             
              def reset_output(initial = "")
         | 
    
        data/lib/liveblog.rb
    CHANGED
    
    | @@ -7,6 +7,9 @@ require 'runeblog' | |
| 7 7 | 
             
            require 'pathmagic'
         | 
| 8 8 | 
             
            require 'processing'
         | 
| 9 9 |  | 
| 10 | 
            +
            # top = Livetext::Path + "/../plugin/liveblog/"
         | 
| 11 | 
            +
            # eval(File.read("#{top}/testing.rb"))
         | 
| 12 | 
            +
             | 
| 10 13 |  | 
| 11 14 | 
             
            def init_liveblog    # FIXME - a lot of this logic sucks
         | 
| 12 15 | 
             
              dir = Dir.pwd.sub(/\.blogs.*/, "")
         | 
| @@ -44,7 +47,7 @@ end | |
| 44 47 |  | 
| 45 48 | 
             
            def post_trailer
         | 
| 46 49 | 
             
              perma = _var("publish.proto") + "://" + _var("publish.server") +
         | 
| 47 | 
            -
                      "/" + _var("publish.path") + "/ | 
| 50 | 
            +
                      "/" + _var("publish.path") + "/" + _var("post.aslug") + 
         | 
| 48 51 | 
             
                      ".html"
         | 
| 49 52 | 
             
              tags = _var("post.tags")
         | 
| 50 53 | 
             
              if tags.empty?
         | 
| @@ -85,9 +88,10 @@ def code | |
| 85 88 | 
             
            end
         | 
| 86 89 |  | 
| 87 90 | 
             
            def _read_navbar_data
         | 
| 88 | 
            -
               | 
| 91 | 
            +
              vdir = @blog.root/:views/@blog.view
         | 
| 92 | 
            +
              dir = vdir/"themes/standard/banner/navbar/"
         | 
| 89 93 | 
             
              datafile = dir/"list.data"
         | 
| 90 | 
            -
               | 
| 94 | 
            +
              _get_data(datafile)
         | 
| 91 95 | 
             
            end
         | 
| 92 96 |  | 
| 93 97 | 
             
            def banner
         | 
| @@ -97,6 +101,7 @@ def banner | |
| 97 101 | 
             
              high = 250
         | 
| 98 102 | 
             
              str2 = ""
         | 
| 99 103 | 
             
              navbar = nil
         | 
| 104 | 
            +
              vdir = @blog.root/:views/@blog.view
         | 
| 100 105 | 
             
              lines = _body.to_a
         | 
| 101 106 |  | 
| 102 107 | 
             
              lines.each do |line|
         | 
| @@ -130,15 +135,9 @@ def banner | |
| 130 135 | 
             
                    end
         | 
| 131 136 | 
             
                    str2 << "<td>" + File.read(file) + "</td>" + "\n"
         | 
| 132 137 | 
             
                  when "navbar"
         | 
| 133 | 
            -
                     | 
| 134 | 
            -
                    _make_navbar  # horiz is default
         | 
| 135 | 
            -
                    file = "banner/navbar.html"
         | 
| 136 | 
            -
                    navbar = File.read(file)
         | 
| 138 | 
            +
                    navbar = _make_navbar  # horiz is default
         | 
| 137 139 | 
             
                  when "vnavbar"
         | 
| 138 | 
            -
                     | 
| 139 | 
            -
                    _make_navbar(:vert)
         | 
| 140 | 
            -
                    file = "banner/vnavbar.html"
         | 
| 141 | 
            -
                    navbar = File.read(file)
         | 
| 140 | 
            +
                    navbar = _make_navbar(:vert)
         | 
| 142 141 | 
             
                  when "break"
         | 
| 143 142 | 
             
                     str2 << "  </tr>\n  <tr>"  + "\n"
         | 
| 144 143 | 
             
                else
         | 
| @@ -347,7 +346,7 @@ def pin | |
| 347 346 | 
             
              pinned.each do |pinview|
         | 
| 348 347 | 
             
                dir = @blog.root/:views/pinview/"themes/standard/widgets/pinned/"
         | 
| 349 348 | 
             
                datafile = dir/"list.data"
         | 
| 350 | 
            -
                pins =  | 
| 349 | 
            +
                pins = _get_data?(datafile)
         | 
| 351 350 | 
             
                pins << "#{@meta.num} #{@meta.title}\n"
         | 
| 352 351 | 
             
                pins.uniq!
         | 
| 353 352 | 
             
                File.open(datafile, "w") {|out| pins.each {|pin| out.puts pin } }
         | 
| @@ -498,25 +497,10 @@ def _load_local(widget) | |
| 498 497 | 
             
            rescue => err
         | 
| 499 498 | 
             
              STDERR.puts err.to_s
         | 
| 500 499 | 
             
              STDERR.puts err.backtrace.join("\n")
         | 
| 500 | 
            +
              sleep 6; RubyText.stop
         | 
| 501 501 | 
             
              exit
         | 
| 502 502 | 
             
            end
         | 
| 503 503 |  | 
| 504 | 
            -
            # def pinned_rebuild
         | 
| 505 | 
            -
            #   view = @blog.view
         | 
| 506 | 
            -
            #   view = _args[0] unless _args.empty?
         | 
| 507 | 
            -
            #   Dir.chdir(@blog.root/:views/view/"themes/standard/") do
         | 
| 508 | 
            -
            #     wtag = "widgets/pinned"
         | 
| 509 | 
            -
            #     code = _load_local("pinned")
         | 
| 510 | 
            -
            #     if code 
         | 
| 511 | 
            -
            #       Dir.chdir(wtag) do 
         | 
| 512 | 
            -
            #         widget = code.new(@blog)
         | 
| 513 | 
            -
            #         widget.build
         | 
| 514 | 
            -
            #       end
         | 
| 515 | 
            -
            #       # _include_file wtag/"pinned-card.html"
         | 
| 516 | 
            -
            #     end
         | 
| 517 | 
            -
            #   end
         | 
| 518 | 
            -
            # end
         | 
| 519 | 
            -
             | 
| 520 504 | 
             
            def _handle_standard_widget(tag)
         | 
| 521 505 | 
             
              wtag = :widgets/tag
         | 
| 522 506 | 
             
              code = _load_local(tag)
         | 
| @@ -564,6 +548,7 @@ def sidebar | |
| 564 548 | 
             
            rescue => err
         | 
| 565 549 | 
             
              puts "err = #{err}"
         | 
| 566 550 | 
             
              puts err.backtrace.join("\n")
         | 
| 551 | 
            +
              sleep 6; RubyText.stop
         | 
| 567 552 | 
             
              exit
         | 
| 568 553 | 
             
            end
         | 
| 569 554 |  | 
| @@ -686,20 +671,20 @@ def _make_navbar(orient = :horiz) | |
| 686 671 | 
             
                </td></tr></table>
         | 
| 687 672 | 
             
              HTML
         | 
| 688 673 |  | 
| 689 | 
            -
              html_file = @blog.root/:views/@blog.view/"themes/standard/banner"/name
         | 
| 674 | 
            +
              html_file = @blog.root/:views/@blog.view/"themes/standard/banner/navbar"/name
         | 
| 690 675 | 
             
              output = File.new(html_file, "w")
         | 
| 691 676 | 
             
              output.puts start
         | 
| 692 677 | 
             
              lines = _read_navbar_data
         | 
| 693 678 | 
             
              lines = ["index  Home"] + lines  unless _args.include?("nohome")
         | 
| 694 679 | 
             
              lines.each do |line|
         | 
| 695 680 | 
             
                basename, cdata = line.chomp.strip.split(" ", 2)
         | 
| 696 | 
            -
                full = :banner/basename+".html"
         | 
| 681 | 
            +
                full = :banner/:navbar/basename+".html"
         | 
| 697 682 | 
             
                href_main = _main(full)
         | 
| 698 683 | 
             
                if basename == "index"  # special case
         | 
| 699 684 | 
             
                  output.puts %[#{li1} <a class="nav-link" href="index.html">#{cdata}<span class="sr-only">(current)</span></a> #{li2}]
         | 
| 700 685 | 
             
                else
         | 
| 701 | 
            -
                  dir = @blog.root/:views/@blog.view/"themes/standard/banner"
         | 
| 702 | 
            -
                  dest = vdir/"remote/banner"/basename+".html"
         | 
| 686 | 
            +
                  dir = @blog.root/:views/@blog.view/"themes/standard/banner/navbar"
         | 
| 687 | 
            +
                  dest = vdir/"remote/banner/navbar"/basename+".html"
         | 
| 703 688 | 
             
                  preprocess cwd: dir, src: basename, dst: dest, call: ".nopara" # , debug: true
         | 
| 704 689 | 
             
                  output.puts %[#{li1} <a class="nav-link" #{href_main}>#{cdata}</a> #{li2}]
         | 
| 705 690 | 
             
                end
         | 
| @@ -768,11 +753,6 @@ def _post_lookup(postid)    # side-effect | |
| 768 753 | 
             
              vp
         | 
| 769 754 | 
             
            end
         | 
| 770 755 |  | 
| 771 | 
            -
            def _interpolate(str, context)   # FIXME move this later
         | 
| 772 | 
            -
              wrapped = "%[" + str.dup + "]"  # could fail...
         | 
| 773 | 
            -
              eval(wrapped, context)
         | 
| 774 | 
            -
            end
         | 
| 775 | 
            -
             | 
| 776 756 | 
             
            def _card_generic(card_title:, middle:, extra: "")
         | 
| 777 757 | 
             
              front = <<-HTML
         | 
| 778 758 | 
             
                <div class="card #{extra} mb-3">
         | 
    
        data/lib/lowlevel.rb
    ADDED
    
    | @@ -0,0 +1,73 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
              def dump(obj, name)
         | 
| 3 | 
            +
                File.write(name, obj)
         | 
| 4 | 
            +
              end
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              def system!(str, show: false)
         | 
| 7 | 
            +
                log!(enter: __method__, args: [str], level: 2)
         | 
| 8 | 
            +
                STDERR.puts str if show
         | 
| 9 | 
            +
                rc = system(str)
         | 
| 10 | 
            +
                return rc if rc
         | 
| 11 | 
            +
                STDERR.puts "FAILED: #{str.inspect}"
         | 
| 12 | 
            +
                STDERR.puts "\ncaller = \n#{caller.join("\n  ")}\n"
         | 
| 13 | 
            +
                if defined?(RubyText)
         | 
| 14 | 
            +
                  sleep 6
         | 
| 15 | 
            +
                  RubyText.stop
         | 
| 16 | 
            +
                  exit
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
                return rc
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              def _get_data?(file)   # File need not exist
         | 
| 22 | 
            +
                if File.exist?(file)
         | 
| 23 | 
            +
                  _get_data(file)
         | 
| 24 | 
            +
                else
         | 
| 25 | 
            +
                  []
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              def _get_data(file)
         | 
| 30 | 
            +
                lines = File.readlines(file)
         | 
| 31 | 
            +
                lines.reject! {|line| line[0] == "-" }  # allow rejection of lines
         | 
| 32 | 
            +
                lines = lines.map do |line|
         | 
| 33 | 
            +
                  line.sub(/ *# .*$/, "")               # allow trailing comments
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
                lines
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              def copy(src, dst)
         | 
| 39 | 
            +
                log!(enter: __method__, args: [src, dst], level: 2)
         | 
| 40 | 
            +
                cmd = "cp #{src} #{dst} 2>/dev/null"
         | 
| 41 | 
            +
                system!(cmd)
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              def copy!(src, dst)
         | 
| 45 | 
            +
                log!(enter: __method__, args: [src, dst], level: 2)
         | 
| 46 | 
            +
                cmd = "cp -r #{src} #{dst} 2>/dev/null"
         | 
| 47 | 
            +
                system!(cmd)
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
              def create_dirs(*dirs)
         | 
| 51 | 
            +
                log!(enter: __method__, args: [*dirs], level: 3)
         | 
| 52 | 
            +
                dirs.each do |dir|
         | 
| 53 | 
            +
                  dir = dir.to_s  # symbols allowed
         | 
| 54 | 
            +
                  next if Dir.exist?(dir)
         | 
| 55 | 
            +
                  cmd = "mkdir -p #{dir} >/dev/null"
         | 
| 56 | 
            +
                  result = system!(cmd) 
         | 
| 57 | 
            +
                  raise CantCreateDir(dir) unless result
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              def interpolate(str, bind)
         | 
| 62 | 
            +
                log!(enter: __method__, args: [str, bind], level: 3)
         | 
| 63 | 
            +
                wrap = "<<-EOS\n#{str}\nEOS"
         | 
| 64 | 
            +
                eval wrap, bind
         | 
| 65 | 
            +
              end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              def error(err)
         | 
| 68 | 
            +
                log!(str: err, enter: __method__, args: [err], level: 2)
         | 
| 69 | 
            +
                str = "\n  Error: #{err}"
         | 
| 70 | 
            +
                puts str
         | 
| 71 | 
            +
                puts err.backtrace.join("\n")
         | 
| 72 | 
            +
              end
         | 
| 73 | 
            +
             | 
    
        data/lib/publish.rb
    CHANGED
    
    | @@ -37,31 +37,15 @@ class RuneBlog::Publishing | |
| 37 37 | 
             
                url = "#@proto://#@server/#@path"  # /#{vname}"
         | 
| 38 38 | 
             
              end
         | 
| 39 39 |  | 
| 40 | 
            -
              def  | 
| 41 | 
            -
                log!(enter: __method__,  | 
| 42 | 
            -
                rc = system(str)
         | 
| 43 | 
            -
                rc
         | 
| 44 | 
            -
              end
         | 
| 45 | 
            -
             | 
| 46 | 
            -
              def publish(files, assets=[])
         | 
| 47 | 
            -
                log!(enter: __method__, args: [files, assets], level: 1)
         | 
| 40 | 
            +
              def publish
         | 
| 41 | 
            +
                log!(enter: __method__, level: 1)
         | 
| 48 42 | 
             
                dir = @docroot/@path
         | 
| 49 43 | 
             
                view_name = @blog.view.name
         | 
| 50 44 | 
             
                viewpath = dir # /view_name
         | 
| 51 | 
            -
                 | 
| 52 | 
            -
                 | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
                  cmd = "scp -r #{file} #{dest} >/dev/null 2>/tmp/wtf"
         | 
| 56 | 
            -
                  debug "cmd = #{cmd.inspect}  - see /tmp/wtf"
         | 
| 57 | 
            -
                  result = system!(cmd) || puts("\n  Could not copy #{file} to #{dest}")
         | 
| 58 | 
            -
                end
         | 
| 59 | 
            -
                unless assets.empty?
         | 
| 60 | 
            -
                  cmd = "scp #{assets.join(' ')} #@user@#@server:#{viewpath}/assets >/dev/null 2>/tmp/wtf2"
         | 
| 61 | 
            -
                  result = system!(cmd)
         | 
| 62 | 
            -
                  raise PublishError if !result
         | 
| 63 | 
            -
                end
         | 
| 64 | 
            -
                dump(files, "#{@blog.view.dir}/last_published")
         | 
| 45 | 
            +
                # FIXME rsync doesn't work
         | 
| 46 | 
            +
                cmd = "rsync -r -z #{@blog.root}/views/#{@blog.view}/remote/ #@user@#@server:#{viewpath}/"
         | 
| 47 | 
            +
                system!(cmd)
         | 
| 48 | 
            +
                dump("#{@blog.view} at #{Time.now}", "#{@blog.view.dir}/last_published")
         | 
| 65 49 | 
             
                true
         | 
| 66 50 | 
             
              end
         | 
| 67 51 |  | 
    
        data/lib/repl.rb
    CHANGED
    
    | @@ -39,6 +39,7 @@ module RuneBlog::REPL | |
| 39 39 |  | 
| 40 40 | 
             
              def cmd_config(arg, testing = false)
         | 
| 41 41 | 
             
                hash = {"global.lt3           Global configuration"                     => "global.lt3",
         | 
| 42 | 
            +
                        "banner/top.lt3       Text portion of banner"                   => "banner/top.lt3",
         | 
| 42 43 | 
             
                        "blog/generate.lt3    Generator for view (usu not edited)"      => "blog/generate.lt3",
         | 
| 43 44 | 
             
                        ".... head.lt3        HEAD info for view"                       => "blog/head.lt3",
         | 
| 44 45 | 
             
                        ".... banner.lt3      banner description"                       => "blog/banner.lt3",
         | 
| @@ -75,10 +76,10 @@ module RuneBlog::REPL | |
| 75 76 | 
             
              end
         | 
| 76 77 |  | 
| 77 78 | 
             
              def _manage_navbar(arg, testing = false)   # cloned from manage_pages
         | 
| 78 | 
            -
                dir = @blog.view.dir/"themes/standard/navbar"
         | 
| 79 | 
            +
                dir = @blog.view.dir/"themes/standard/banner/navbar"
         | 
| 79 80 | 
             
                files = Dir.entries(dir) - %w[. .. navbar.lt3]
         | 
| 80 | 
            -
                new_item = "  [New item]  "
         | 
| 81 81 | 
             
                main_file = "[ navbar.lt3 ]"
         | 
| 82 | 
            +
                new_item  = "  [New item]  "
         | 
| 82 83 | 
             
                files = [main_file] + files + [new_item]
         | 
| 83 84 | 
             
                num, fname = STDSCR.menu(title: "Edit navbar:", items: files)
         | 
| 84 85 | 
             
                return if fname.nil?
         | 
| @@ -113,7 +114,7 @@ module RuneBlog::REPL | |
| 113 114 | 
             
                dir = @blog.view.dir/"themes/standard/widgets/pages"
         | 
| 114 115 | 
             
                # Assume child files already generated (and list.data??)
         | 
| 115 116 | 
             
                data = dir/"list.data"
         | 
| 116 | 
            -
                lines =  | 
| 117 | 
            +
                lines = _get_data?(data)
         | 
| 117 118 | 
             
                hash = {}
         | 
| 118 119 | 
             
                lines.each do |line|
         | 
| 119 120 | 
             
                  url, name = line.chomp.split(",")
         | 
| @@ -192,19 +193,8 @@ module RuneBlog::REPL | |
| 192 193 | 
             
                  return @out
         | 
| 193 194 | 
             
                end
         | 
| 194 195 |  | 
| 195 | 
            -
                # Need to check dirty/clean status first
         | 
| 196 | 
            -
                dirty, all, assets = @blog.view.publishable_files
         | 
| 197 | 
            -
                files = dirty
         | 
| 198 | 
            -
                if dirty.empty?
         | 
| 199 | 
            -
                  puts fx("\n  No files are out of date." + " "*20, :bold)
         | 
| 200 | 
            -
                  print "  Publish anyway? "
         | 
| 201 | 
            -
                  yn = RubyText.gets.chomp
         | 
| 202 | 
            -
                  files = all if yn == "y"
         | 
| 203 | 
            -
                end
         | 
| 204 | 
            -
                return @out if files.empty?
         | 
| 205 | 
            -
             | 
| 206 196 | 
             
                ret = RubyText.spinner(label: " Publishing... ") do
         | 
| 207 | 
            -
                  @blog.view.publisher.publish | 
| 197 | 
            +
                  @blog.view.publisher.publish
         | 
| 208 198 | 
             
                end
         | 
| 209 199 | 
             
                return @out unless ret
         | 
| 210 200 |  | 
    
        data/lib/runeblog.rb
    CHANGED
    
    | @@ -10,7 +10,6 @@ require 'logging' | |
| 10 10 |  | 
| 11 11 | 
             
            require 'runeblog_version'
         | 
| 12 12 | 
             
            require 'helpers-blog'
         | 
| 13 | 
            -
            require 'default'
         | 
| 14 13 | 
             
            require 'view'
         | 
| 15 14 | 
             
            require 'publish'
         | 
| 16 15 | 
             
            require 'post'
         | 
| @@ -48,6 +47,34 @@ class RuneBlog | |
| 48 47 |  | 
| 49 48 | 
             
              include Helpers
         | 
| 50 49 |  | 
| 50 | 
            +
                class Default
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                # This will all become much more generic later.
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                def RuneBlog.post_template(num: 0, title: "No title", date: nil, view: "test_view", 
         | 
| 55 | 
            +
                                           teaser: "No teaser", body: "No body", tags: ["untagged"], 
         | 
| 56 | 
            +
                                           views: [], back: "javascript:history.go(-1)", home: "no url")
         | 
| 57 | 
            +
                  log!(enter: __method__, args: [num, title, date, view, teaser, body, tags, views, back, home], level: 3)
         | 
| 58 | 
            +
                  viewlist = (views + [view.to_s]).join(" ")
         | 
| 59 | 
            +
                  taglist = ".tags " + tags.join(" ")
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                  <<~TEXT
         | 
| 62 | 
            +
                  .post #{num}
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                  .title #{title}
         | 
| 65 | 
            +
                  .pubdate #{date}
         | 
| 66 | 
            +
                  .views #{viewlist}
         | 
| 67 | 
            +
                  #{taglist}
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                  .teaser
         | 
| 70 | 
            +
                  #{teaser}
         | 
| 71 | 
            +
                  .end
         | 
| 72 | 
            +
                  #{body}
         | 
| 73 | 
            +
                  TEXT
         | 
| 74 | 
            +
                end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
              end
         | 
| 77 | 
            +
             | 
| 51 78 | 
             
              def _tmp_error(err)   # FIXME move to helpers
         | 
| 52 79 | 
             
                out = "/tmp/blog#{rand(100)}.txt"
         | 
| 53 80 | 
             
                File.open(out, "w") do |f|
         | 
| @@ -68,7 +95,7 @@ class RuneBlog | |
| 68 95 | 
             
                  create_dirs(:data, :drafts, :views, :posts)
         | 
| 69 96 | 
             
                  new_sequence
         | 
| 70 97 | 
             
                end
         | 
| 71 | 
            -
                copy_data(:config, repo_root/:data)
         | 
| 98 | 
            +
                copy_data(:config, repo_root/:data) unless File.exist?(repo_root/"data/VIEW")
         | 
| 72 99 | 
             
                write_repo_config(root: repo_root)
         | 
| 73 100 | 
             
                @blog = self.new
         | 
| 74 101 | 
             
                @blog
         | 
| @@ -90,10 +117,11 @@ class RuneBlog | |
| 90 117 | 
             
                self.class.blog = self   # Weird. Like a singleton - dumbass circular dependency?
         | 
| 91 118 |  | 
| 92 119 | 
             
                @root = Dir.pwd/root_rel
         | 
| 93 | 
            -
             | 
| 120 | 
            +
            #   copy_data(:config, @root/:data) unless File.exist?(@root/"data/VIEW")
         | 
| 94 121 | 
             
                write_repo_config(root: @root)
         | 
| 95 122 | 
             
                get_repo_config
         | 
| 96 | 
            -
                @views =  | 
| 123 | 
            +
                @views = retrieve_views
         | 
| 124 | 
            +
                self.view = File.read(@root/"data/VIEW").chomp
         | 
| 97 125 | 
             
                md = Dir.pwd.match(%r[.*/views/(.*?)/])
         | 
| 98 126 | 
             
                if md
         | 
| 99 127 | 
             
                  @view_name = md[1]
         | 
| @@ -209,6 +237,9 @@ class RuneBlog | |
| 209 237 | 
             
              def view=(arg)
         | 
| 210 238 | 
             
                log!(enter: __method__, args: [arg], level: 2)
         | 
| 211 239 | 
             
                case arg
         | 
| 240 | 
            +
                  when "[no view]"
         | 
| 241 | 
            +
                    # puts "Warning: No current view set"
         | 
| 242 | 
            +
                    @view = nil
         | 
| 212 243 | 
             
                  when RuneBlog::View
         | 
| 213 244 | 
             
                    @view = arg
         | 
| 214 245 | 
             
                    _set_publisher
         | 
| @@ -472,7 +503,9 @@ class RuneBlog | |
| 472 503 | 
             
                preprocess cwd: vdir/"themes/standard", deps: depend, force: true,
         | 
| 473 504 | 
             
                           src: "blog/generate.lt3", dst: vdir/:remote/"index.html", 
         | 
| 474 505 | 
             
                           call: ".nopara"
         | 
| 506 | 
            +
                copy!("#{vdir}/themes/standard/banner/*", "#{vdir}/remote/banner/")  # includes navbar/
         | 
| 475 507 | 
             
                copy("#{vdir}/assets/*", "#{vdir}/remote/assets/")
         | 
| 508 | 
            +
            # rebuild widgets
         | 
| 476 509 | 
             
                copy_widget_html(view)
         | 
| 477 510 | 
             
              rescue => err
         | 
| 478 511 | 
             
                STDERR.puts err
         | 
| @@ -484,8 +517,8 @@ class RuneBlog | |
| 484 517 | 
             
                log!(enter: __method__, args: [draft], level: 2)
         | 
| 485 518 | 
             
                # FIXME dumb code
         | 
| 486 519 | 
             
                view_line = File.readlines(draft).grep(/^.views /)
         | 
| 487 | 
            -
                raise "More than one .views call | 
| 488 | 
            -
                raise "No .views call | 
| 520 | 
            +
                raise "More than one .views call in #{draft}" if view_line.size > 1
         | 
| 521 | 
            +
                raise "No .views call in #{draft}" if view_line.size < 1
         | 
| 489 522 | 
             
                view_line = view_line.first
         | 
| 490 523 | 
             
                views = view_line[7..-1].split
         | 
| 491 524 | 
             
                views.uniq 
         | 
| @@ -593,10 +626,11 @@ class RuneBlog | |
| 593 626 | 
             
                preprocess cwd: @theme/:post, src: "generate.lt3", force: true, 
         | 
| 594 627 | 
             
                           dst: remote/ahtml, copy: @theme/:post,
         | 
| 595 628 | 
             
                           call: ".nopara"    # , debug: true
         | 
| 629 | 
            +
            #   copy(remote/ahtml, remote/permalink/ahtml)
         | 
| 596 630 | 
             
                # FIXME dependencies?
         | 
| 597 | 
            -
             | 
| 598 | 
            -
             | 
| 599 | 
            -
             | 
| 631 | 
            +
            #   preprocess cwd: @theme/:post, src: "permalink.lt3", 
         | 
| 632 | 
            +
            #              dst: remote/:permalink/ahtml,
         | 
| 633 | 
            +
            #              mix: "liveblog"  # , debug: true
         | 
| 600 634 | 
             
                copy_widget_html(view_name)
         | 
| 601 635 | 
             
              rescue => err
         | 
| 602 636 | 
             
                _tmp_error(err)
         | 
    
        data/lib/runeblog_version.rb
    CHANGED
    
    | @@ -3,7 +3,7 @@ if !defined?(RuneBlog::Path) | |
| 3 3 | 
             
            # if ! (Object.constants.include?(:RuneBlog) && RuneBlog.constants.include?(:Path))
         | 
| 4 4 |  | 
| 5 5 | 
             
            class RuneBlog
         | 
| 6 | 
            -
              VERSION = "0.2. | 
| 6 | 
            +
              VERSION = "0.2.94"
         | 
| 7 7 |  | 
| 8 8 | 
             
              path = Gem.find_files("runeblog").grep(/runeblog-/).first
         | 
| 9 9 | 
             
              Path  = File.dirname(path)
         | 
| @@ -41,21 +41,6 @@ def make_exception(sym, str) | |
| 41 41 | 
             
              end
         | 
| 42 42 | 
             
            end
         | 
| 43 43 |  | 
| 44 | 
            -
            def system!(str, show: false)
         | 
| 45 | 
            -
              log!(enter: __method__, args: [str], level: 2)
         | 
| 46 | 
            -
              STDERR.puts str if show
         | 
| 47 | 
            -
              rc = system(str)
         | 
| 48 | 
            -
              if rc
         | 
| 49 | 
            -
                return rc
         | 
| 50 | 
            -
              else
         | 
| 51 | 
            -
                STDERR.puts "FAILED: #{str.inspect}"
         | 
| 52 | 
            -
                STDERR.puts "\ncaller = \n#{caller.join("\n  ")}\n"
         | 
| 53 | 
            -
            exit
         | 
| 54 | 
            -
                return rc
         | 
| 55 | 
            -
              end
         | 
| 56 | 
            -
              rc
         | 
| 57 | 
            -
            end
         | 
| 58 | 
            -
             | 
| 59 44 | 
             
            def prefix(num)
         | 
| 60 45 | 
             
              log!(enter: __method__, args: [num], level: 3)
         | 
| 61 46 | 
             
              "#{'%04d' % num.to_i}"
         | 
    
        data/test/austin.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: runeblog
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.94
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Hal Fulton
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019-12- | 
| 11 | 
            +
            date: 2019-12-20 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: livetext
         | 
| @@ -91,7 +91,6 @@ files: | |
| 91 91 | 
             
            - empty_view/assets/sky2.jpg
         | 
| 92 92 | 
             
            - empty_view/posts/GIT_IS_DUMB
         | 
| 93 93 | 
             
            - empty_view/remote/assets/GIT_IS_DUMB
         | 
| 94 | 
            -
            - empty_view/remote/banner/austin-pano.jpg
         | 
| 95 94 | 
             
            - empty_view/remote/etc/GIT_IS_DUMB
         | 
| 96 95 | 
             
            - empty_view/remote/permalink/GIT_IS_DUMB
         | 
| 97 96 | 
             
            - empty_view/remote/widgets/ad/GIT_IS_DUMB
         | 
| @@ -100,12 +99,12 @@ files: | |
| 100 99 | 
             
            - empty_view/remote/widgets/pages/GIT_IS_DUMB
         | 
| 101 100 | 
             
            - empty_view/remote/widgets/pinned/GIT_IS_DUMB
         | 
| 102 101 | 
             
            - empty_view/themes/standard/README
         | 
| 103 | 
            -
            - empty_view/themes/standard/banner/ | 
| 104 | 
            -
            - empty_view/themes/standard/banner/ | 
| 105 | 
            -
            - empty_view/themes/standard/banner/ | 
| 106 | 
            -
            - empty_view/themes/standard/banner/ | 
| 102 | 
            +
            - empty_view/themes/standard/banner/banner.lt3
         | 
| 103 | 
            +
            - empty_view/themes/standard/banner/navbar/about.lt3
         | 
| 104 | 
            +
            - empty_view/themes/standard/banner/navbar/contact.lt3
         | 
| 105 | 
            +
            - empty_view/themes/standard/banner/navbar/faq.lt3
         | 
| 106 | 
            +
            - empty_view/themes/standard/banner/navbar/list.data
         | 
| 107 107 | 
             
            - empty_view/themes/standard/banner/top.lt3
         | 
| 108 | 
            -
            - empty_view/themes/standard/blog/banner.lt3
         | 
| 109 108 | 
             
            - empty_view/themes/standard/blog/generate.lt3
         | 
| 110 109 | 
             
            - empty_view/themes/standard/blog/head.lt3
         | 
| 111 110 | 
             
            - empty_view/themes/standard/blog/index.lt3
         | 
| @@ -176,7 +175,6 @@ files: | |
| 176 175 | 
             
            - empty_view/themes/standard/widgets/tag-cloud/tag-cloud.lt3
         | 
| 177 176 | 
             
            - empty_view/themes/standard/widgets/tag-cloud/tag-cloud.rb
         | 
| 178 177 | 
             
            - lib/Javascript.stuff
         | 
| 179 | 
            -
            - lib/default.rb
         | 
| 180 178 | 
             
            - lib/exper/2svg.lt3
         | 
| 181 179 | 
             
            - lib/exper/callout.js
         | 
| 182 180 | 
             
            - lib/exper/fbtw-js
         | 
| @@ -188,6 +186,7 @@ files: | |
| 188 186 | 
             
            - lib/helpers-repl.rb
         | 
| 189 187 | 
             
            - lib/liveblog.rb
         | 
| 190 188 | 
             
            - lib/logging.rb
         | 
| 189 | 
            +
            - lib/lowlevel.rb
         | 
| 191 190 | 
             
            - lib/pathmagic.rb
         | 
| 192 191 | 
             
            - lib/post.rb
         | 
| 193 192 | 
             
            - lib/processing.rb
         | 
| Binary file | 
| @@ -1 +0,0 @@ | |
| 1 | 
            -
            .include ../widgets/pages/faq.lt3
         | 
    
        data/lib/default.rb
    DELETED
    
    | @@ -1,31 +0,0 @@ | |
| 1 | 
            -
            class RuneBlog::Default
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            # This will all become much more generic later.
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            def RuneBlog.post_template(num: 0, title: "No title", date: nil, view: "test_view", 
         | 
| 6 | 
            -
                                   teaser: "No teaser", body: "No body", tags: ["untagged"], 
         | 
| 7 | 
            -
                                   views: [], back: "javascript:history.go(-1)", home: "no url")
         | 
| 8 | 
            -
              log!(enter: __method__, args: [num, title, date, view, teaser, body, tags, views, back, home], level: 3)
         | 
| 9 | 
            -
              viewlist = (views + [view.to_s]).join(" ")
         | 
| 10 | 
            -
              taglist = ".tags " + tags.join(" ")
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            # .mixin liveblog
         | 
| 13 | 
            -
            # . ^ get rid of this later
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            <<-TEXT
         | 
| 16 | 
            -
            .post #{num}
         | 
| 17 | 
            -
             
         | 
| 18 | 
            -
            .title #{title}
         | 
| 19 | 
            -
            .pubdate #{date}
         | 
| 20 | 
            -
            .views #{viewlist}
         | 
| 21 | 
            -
            #{taglist}
         | 
| 22 | 
            -
             
         | 
| 23 | 
            -
            .teaser
         | 
| 24 | 
            -
            #{teaser}
         | 
| 25 | 
            -
            .end
         | 
| 26 | 
            -
            #{body}
         | 
| 27 | 
            -
            TEXT
         | 
| 28 | 
            -
             | 
| 29 | 
            -
            end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
            end
         |