solutus 0.0.1 → 0.0.2
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/lib/solutus.rb +81 -15
- data/resources/editBlog.html +0 -0
- data/resources/index.html +18 -0
- metadata +5 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 49cd8eff79c5ef6ec077eca26f41a41d665388f7a4dcac730a310f1df588cb95
         | 
| 4 | 
            +
              data.tar.gz: 8f502367c1b27d14040cf2856fab20f365f91b3c05e6b26486a4102a8329e3fc
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a1aae2085d6b3ac081bf89db1e3b74a2aba9b72c4616e8b1ab977409f4da952cf0a8d8e3fde3e00946a69ba79f1bfa90639cc9396a8ca746c1bcdd6b1db4bfcb
         | 
| 7 | 
            +
              data.tar.gz: '09e0f4b38235c12bc62efed2705bbf021ac68428cda126a9e1429daf18becea546c680ea76d769b5e4730f06e006f61b9c585a6d6f4d9e28656abd5b9e8356f3'
         | 
    
        data/lib/solutus.rb
    CHANGED
    
    | @@ -9,11 +9,13 @@ class Solutus | |
| 9 9 | 
             
                BLOG_TEMPLATE = "post"
         | 
| 10 10 | 
             
                BUILD_PATH = "deploy"
         | 
| 11 11 | 
             
                SITE_PATH = File.join(BUILD_PATH, "site")
         | 
| 12 | 
            +
                BLOG_BUILD_PATH = File.join(SITE_PATH, "archive")
         | 
| 12 13 | 
             
                STATIC_PATH = "static"
         | 
| 13 14 | 
             
                TEMPLATES_PATH = "templates"
         | 
| 14 15 | 
             
                SITE_PAGES_PATH = File.join("pages", "site-pages")
         | 
| 15 16 | 
             
                POSTS_PATH = File.join("pages", "posts")
         | 
| 16 17 | 
             
                BLOG_DATE_FORMAT = "%b %-d, %Y"
         | 
| 18 | 
            +
                SETTINGS_FILE = "settings.yml"
         | 
| 17 19 |  | 
| 18 20 | 
             
                class Solutus_Server < Sinatra::Base
         | 
| 19 21 | 
             
                    set :public_folder, SITE_PATH
         | 
| @@ -21,13 +23,24 @@ class Solutus | |
| 21 23 | 
             
                    get "/" do
         | 
| 22 24 | 
             
                        send_file File.join(settings.public_folder, 'index.html')
         | 
| 23 25 | 
             
                    end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    get "/reset" do
         | 
| 28 | 
            +
                        Solutus.command("build")
         | 
| 29 | 
            +
                        redirect "/"
         | 
| 30 | 
            +
                    end
         | 
| 24 31 |  | 
| 25 32 | 
             
                    get "/edit" do
         | 
| 26 | 
            -
                         | 
| 33 | 
            +
                        send_file File.join(path_to_resources, "index.html")
         | 
| 27 34 | 
             
                    end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                     | 
| 30 | 
            -
                        " | 
| 35 | 
            +
             | 
| 36 | 
            +
                    post "/newpost" do
         | 
| 37 | 
            +
                        Solutus.command("new", "post", params["post-title"])
         | 
| 38 | 
            +
                        Solutus.build
         | 
| 39 | 
            +
                        send_file File.join(path_to_resources, "editBlog.html")
         | 
| 40 | 
            +
                    end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    def path_to_resources
         | 
| 43 | 
            +
                        File.join(File.dirname(File.expand_path(__FILE__)), '../resources')
         | 
| 31 44 | 
             
                    end
         | 
| 32 45 | 
             
                end
         | 
| 33 46 |  | 
| @@ -79,6 +92,13 @@ class Solutus | |
| 79 92 | 
             
                end
         | 
| 80 93 |  | 
| 81 94 | 
             
                def self.build
         | 
| 95 | 
            +
                    yml_text = ""
         | 
| 96 | 
            +
                    f = File.open(SETTINGS_FILE, "r")
         | 
| 97 | 
            +
                    f.each_line do |line|
         | 
| 98 | 
            +
                        yml_text += line
         | 
| 99 | 
            +
                    end
         | 
| 100 | 
            +
                    settings_data = YAML.load(yml_text)
         | 
| 101 | 
            +
                    
         | 
| 82 102 | 
             
                    if File.directory?(BUILD_PATH)
         | 
| 83 103 | 
             
                        FileUtils.remove_dir(BUILD_PATH)
         | 
| 84 104 | 
             
                    end
         | 
| @@ -112,7 +132,7 @@ class Solutus | |
| 112 132 | 
             
                                yml_text += line
         | 
| 113 133 | 
             
                            end
         | 
| 114 134 | 
             
                            data = YAML.load(yml_text)
         | 
| 115 | 
            -
                            html = render_page(templates, data, false)
         | 
| 135 | 
            +
                            html = render_page(templates, settings_data, data, false)
         | 
| 116 136 | 
             
                            new_path = File.join(SITE_PATH, entry.split(".")[0] + ".html")
         | 
| 117 137 | 
             
                            f = File.new(new_path, "w")
         | 
| 118 138 | 
             
                            puts "Created #{new_path}"
         | 
| @@ -121,6 +141,7 @@ class Solutus | |
| 121 141 | 
             
                        end
         | 
| 122 142 | 
             
                    end
         | 
| 123 143 |  | 
| 144 | 
            +
                    blog_urls = Hash.new
         | 
| 124 145 | 
             
                    Dir.entries(POSTS_PATH).each do |entry|
         | 
| 125 146 | 
             
                        next if entry == "." || entry == ".."
         | 
| 126 147 | 
             
                        path = File.join(POSTS_PATH, entry)
         | 
| @@ -136,19 +157,51 @@ class Solutus | |
| 136 157 | 
             
                        date = data["date"]
         | 
| 137 158 |  | 
| 138 159 | 
             
                        puts "Rendering blog post #{entry}"
         | 
| 139 | 
            -
                        html = render_page(templates, data, true)
         | 
| 160 | 
            +
                        html = render_page(templates, settings_data, data, true)
         | 
| 161 | 
            +
             | 
| 162 | 
            +
                        relative_dir = File.join(date.year.to_s, date.month.to_s, date.day.to_s)
         | 
| 163 | 
            +
                        root_url = File.join("archive", relative_dir, entry.split(".")[0] + ".html")
         | 
| 164 | 
            +
             | 
| 165 | 
            +
                        year = date.year.to_s
         | 
| 166 | 
            +
                        if !blog_urls.key?(year)
         | 
| 167 | 
            +
                            blog_urls[year] = Array.new
         | 
| 168 | 
            +
                        end
         | 
| 169 | 
            +
                        blog_urls[year].push({"title" => data["title"], "url" => root_url, "date" => date})
         | 
| 140 170 |  | 
| 141 | 
            -
                        dir_path = File.join( | 
| 171 | 
            +
                        dir_path = File.join(BLOG_BUILD_PATH, relative_dir)
         | 
| 142 172 | 
             
                        if !File.directory?(dir_path)
         | 
| 143 173 | 
             
                            FileUtils.mkdir_p(dir_path)
         | 
| 144 174 | 
             
                        end
         | 
| 145 | 
            -
                        file_path = File.join( | 
| 175 | 
            +
                        file_path = File.join(SITE_PATH, root_url)
         | 
| 146 176 | 
             
                        puts "Created #{file_path}"
         | 
| 147 177 | 
             
                        f = File.new(file_path, "w")
         | 
| 148 178 | 
             
                        f.write(html)
         | 
| 149 179 | 
             
                        f.close()
         | 
| 150 | 
            -
                    end
         | 
| 180 | 
            +
                    end        
         | 
| 181 | 
            +
             | 
| 151 182 | 
             
                    #TODO: CREATE SOME FCUKIN BLOG NAVIGATION HTML PAGES
         | 
| 183 | 
            +
                    content = ""
         | 
| 184 | 
            +
                    blog_urls.each do |yr, arr|
         | 
| 185 | 
            +
                        sorted = arr.sort_by {|k| k["date"]} .reverse
         | 
| 186 | 
            +
                        content += "<h3>#{yr}</h3>\n<hr>\n"
         | 
| 187 | 
            +
                        content += "<ul>"
         | 
| 188 | 
            +
                        sorted.each do |hash|
         | 
| 189 | 
            +
                            url = hash["url"]
         | 
| 190 | 
            +
                            title = hash["title"]
         | 
| 191 | 
            +
                            pretty_date = hash["date"].strftime("%b %-d")
         | 
| 192 | 
            +
                            content += "<li><a href=\"/#{url}\">#{title}</a> (#{pretty_date})</li>"
         | 
| 193 | 
            +
                        end
         | 
| 194 | 
            +
                        content += "</ul>"
         | 
| 195 | 
            +
                    end
         | 
| 196 | 
            +
                    path = File.join(SITE_PATH, "archive.html")
         | 
| 197 | 
            +
                    data = Hash.new
         | 
| 198 | 
            +
                    data["title"] = "Archive"
         | 
| 199 | 
            +
                    data["content"] = content
         | 
| 200 | 
            +
                    html = render_page(templates, settings_data, data, false)
         | 
| 201 | 
            +
                    f = File.new(path, "w")
         | 
| 202 | 
            +
                    f.write(html)
         | 
| 203 | 
            +
                    f.close
         | 
| 204 | 
            +
                    puts "Created blog archive @ #{path}"
         | 
| 152 205 |  | 
| 153 206 | 
             
                end
         | 
| 154 207 |  | 
| @@ -193,7 +246,7 @@ HERE | |
| 193 246 | 
             
            title: #{title}
         | 
| 194 247 | 
             
            date: #{date}
         | 
| 195 248 | 
             
            ---
         | 
| 196 | 
            -
            *This is a  | 
| 249 | 
            +
            *This is a temporary blog post page!*
         | 
| 197 250 | 
             
            HERE
         | 
| 198 251 | 
             
                    f = File.new(path, "w")
         | 
| 199 252 | 
             
                    f.write(text)
         | 
| @@ -201,13 +254,16 @@ HERE | |
| 201 254 | 
             
                    puts "Created new blog post #{title} at #{path}"
         | 
| 202 255 | 
             
                end
         | 
| 203 256 |  | 
| 204 | 
            -
                def self.render_page(templates, data, blog)
         | 
| 257 | 
            +
                def self.render_page(templates, default_data, data, blog)
         | 
| 205 258 | 
             
                    if data.key?("template")
         | 
| 206 259 | 
             
                        Mustache.template = templates[data["template"]]
         | 
| 207 260 | 
             
                    else
         | 
| 208 261 | 
             
                        Mustache.template = templates[DEFAULT_TEMPLATE]
         | 
| 209 262 | 
             
                    end
         | 
| 210 263 | 
             
                    result = Mustache.new
         | 
| 264 | 
            +
                    default_data.each do |key, val|
         | 
| 265 | 
            +
                        result[key.to_sym] = val
         | 
| 266 | 
            +
                    end
         | 
| 211 267 | 
             
                    data.each do |key, val|
         | 
| 212 268 | 
             
                        next if key == "template"
         | 
| 213 269 | 
             
                        if key != "title"
         | 
| @@ -262,7 +318,7 @@ HERE | |
| 262 318 | 
             
                    Dir.mkdir(name)
         | 
| 263 319 |  | 
| 264 320 | 
             
                    paths = Array.new
         | 
| 265 | 
            -
                    ["deploy", "static", " | 
| 321 | 
            +
                    ["deploy", "static", "templates", "pages"].each do |dir|
         | 
| 266 322 | 
             
                        paths.push(File.join(name, dir))
         | 
| 267 323 | 
             
                    end
         | 
| 268 324 | 
             
                    ["css", "js", "imgs"].each do |dir|
         | 
| @@ -278,7 +334,15 @@ HERE | |
| 278 334 |  | 
| 279 335 | 
             
                    settings_file =  <<HERE
         | 
| 280 336 | 
             
            name: #{name}
         | 
| 281 | 
            -
            author: Your Name | 
| 337 | 
            +
            author: Your Name
         | 
| 338 | 
            +
            watermark: |
         | 
| 339 | 
            +
              <p style="text-align: center;">
         | 
| 340 | 
            +
                  <small>Powered by <a href="https://rubygems.org/gems/solutus/versions/0.0.1">Solutus</a></small>
         | 
| 341 | 
            +
              </p>
         | 
| 342 | 
            +
            stylesheets: |
         | 
| 343 | 
            +
                <link rel="stylesheet" type="text/css" href="/css/styles.css" />
         | 
| 344 | 
            +
            scripts: |
         | 
| 345 | 
            +
                <script></script>     
         | 
| 282 346 | 
             
            HERE
         | 
| 283 347 |  | 
| 284 348 | 
             
                    styles_file = <<HERE
         | 
| @@ -291,15 +355,17 @@ HERE | |
| 291 355 | 
             
            <!DOCTYPE html>
         | 
| 292 356 | 
             
            <head>
         | 
| 293 357 | 
             
                <title>{{title}}</title>
         | 
| 294 | 
            -
                 | 
| 358 | 
            +
                {{{stylesheets}}}
         | 
| 295 359 | 
             
            </head>
         | 
| 296 360 | 
             
            <body>
         | 
| 297 361 | 
             
                <div id="solutus-everything">
         | 
| 298 362 | 
             
                    {{#blog}}
         | 
| 299 363 | 
             
                        <h1>{{title}}</h1>
         | 
| 300 | 
            -
                        {{date}}
         | 
| 364 | 
            +
                        {{{date}}}
         | 
| 301 365 | 
             
                    {{/blog}}
         | 
| 302 366 | 
             
                    {{{content}}}
         | 
| 367 | 
            +
                    {{{watermark}}}
         | 
| 368 | 
            +
                    {{{scripts}}}
         | 
| 303 369 | 
             
                </div>
         | 
| 304 370 | 
             
            </body>
         | 
| 305 371 | 
             
            </html>
         | 
| 
            File without changes
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            <!DOCTYPE html>
         | 
| 2 | 
            +
            <head>
         | 
| 3 | 
            +
                <title>Editing Site</title>
         | 
| 4 | 
            +
            </head>
         | 
| 5 | 
            +
                <body>
         | 
| 6 | 
            +
                    <h1>Editing Website</h1>
         | 
| 7 | 
            +
                    <p><a href="/">View Site</a></p>
         | 
| 8 | 
            +
                    <p>
         | 
| 9 | 
            +
                        <form method="post" action="/newpost">
         | 
| 10 | 
            +
                            <fieldset>
         | 
| 11 | 
            +
                                <legend>New Blog Post:</legend>
         | 
| 12 | 
            +
                                <p><label for="post-title">Title:</label> <input type="text" name="post-title"></p>
         | 
| 13 | 
            +
                                <p><button type="submit">Create</button></fieldset></p>
         | 
| 14 | 
            +
                            </fieldset>
         | 
| 15 | 
            +
                        </form>
         | 
| 16 | 
            +
                    </p>
         | 
| 17 | 
            +
                </body>
         | 
| 18 | 
            +
            </html>
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: solutus
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jerome Wei
         | 
| @@ -10,7 +10,7 @@ bindir: bin | |
| 10 10 | 
             
            cert_chain: []
         | 
| 11 11 | 
             
            date: 2018-05-15 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 | 
            -
            description: A miminal static site generator
         | 
| 13 | 
            +
            description: A miminal static site generator and local Web frontend
         | 
| 14 14 | 
             
            email: jeromew@berkeley.edu
         | 
| 15 15 | 
             
            executables:
         | 
| 16 16 | 
             
            - solutus
         | 
| @@ -19,6 +19,8 @@ extra_rdoc_files: [] | |
| 19 19 | 
             
            files:
         | 
| 20 20 | 
             
            - bin/solutus
         | 
| 21 21 | 
             
            - lib/solutus.rb
         | 
| 22 | 
            +
            - resources/editBlog.html
         | 
| 23 | 
            +
            - resources/index.html
         | 
| 22 24 | 
             
            homepage: https://github.com/jeromew21/solutus
         | 
| 23 25 | 
             
            licenses:
         | 
| 24 26 | 
             
            - MIT
         | 
| @@ -42,5 +44,5 @@ rubyforge_project: | |
| 42 44 | 
             
            rubygems_version: 2.7.6
         | 
| 43 45 | 
             
            signing_key: 
         | 
| 44 46 | 
             
            specification_version: 4
         | 
| 45 | 
            -
            summary:  | 
| 47 | 
            +
            summary: simplicity
         | 
| 46 48 | 
             
            test_files: []
         |