postwave 0.1.0 → 0.1.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/README.md +46 -0
- data/lib/postwave/client.rb +23 -0
- data/lib/postwave/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b4511f2e9288a14247515ff919efbcdfaf4aef9f7e6ae5d7de5c207795307d73
         | 
| 4 | 
            +
              data.tar.gz: 6997bdd3f519948e40fbf701d792bc761e0d563f23bd171b47cf35b6ba652fb8
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 3248a5fdd235809dee5026f53ecf5dd637c96a3e69e6acff19d91617a6632ae61e49989a79dd16f91258b21de14d54ed748b31af5dbb2974d3e0c97d6f65accf
         | 
| 7 | 
            +
              data.tar.gz: 74bd0b0f980cb534b63c06a3374e4d1e807c68113cf18cc56f1bf6aa601adb4b4c2ae0c5bb55103ed2d2a496064b1b730435933dda937eb2aa446a92bf3279fc
         | 
    
        data/README.md
    CHANGED
    
    | @@ -121,6 +121,10 @@ post = postwave_client.post("my-great-post") | |
| 121 121 |  | 
| 122 122 | 
             
            puts post.title
         | 
| 123 123 | 
             
            # "My Great Post"
         | 
| 124 | 
            +
            puts post.body
         | 
| 125 | 
            +
            # "bla bla bla..."
         | 
| 126 | 
            +
            puts post.body_html # uses Redcarpt to convert body Markdown to HTML
         | 
| 127 | 
            +
            # "<p>bla bla bla...</p>"
         | 
| 124 128 | 
             
            ```
         | 
| 125 129 |  | 
| 126 130 | 
             
            ### Get a Collection of Posts
         | 
| @@ -175,12 +179,54 @@ tag = postwave_clinet.tag("tag1") | |
| 175 179 |  | 
| 176 180 | 
             
            ### Get Text For An RSS Feed
         | 
| 177 181 |  | 
| 182 | 
            +
            This will give you the text for an Atom feed of your blog.
         | 
| 183 | 
            +
             | 
| 178 184 | 
             
            ```ruby
         | 
| 179 185 | 
             
            rss = postwave_client.rss
         | 
| 180 186 |  | 
| 181 187 | 
             
            # "<?xml version="1.0" encoding="utf-8"?>..."
         | 
| 182 188 | 
             
            ```
         | 
| 183 189 |  | 
| 190 | 
            +
            ### Get Pagination Information
         | 
| 191 | 
            +
             | 
| 192 | 
            +
            This will give you a `Postwave::Pagination` object that you can use to build pagination in your Postwave powered site.
         | 
| 193 | 
            +
             | 
| 194 | 
            +
            ```ruby
         | 
| 195 | 
            +
            pagination = postwave_client.pagination(current_page: 3, per_page: 10)
         | 
| 196 | 
            +
             | 
| 197 | 
            +
            # <Postwave::Pagination current_page=3, prev_page=2, next_page=4, total_pages=20>
         | 
| 198 | 
            +
            ```
         | 
| 199 | 
            +
             | 
| 200 | 
            +
            ### Get An Archive of Posts
         | 
| 201 | 
            +
             | 
| 202 | 
            +
            This returns a Hash with year as the key and an ordered array of PostStubs
         | 
| 203 | 
            +
             | 
| 204 | 
            +
            ```ruby
         | 
| 205 | 
            +
            archive = postwave_client.archive
         | 
| 206 | 
            +
             | 
| 207 | 
            +
            # {
         | 
| 208 | 
            +
            #   2025 => 
         | 
| 209 | 
            +
            #     [<Postwave::PostStub title="My Great Post"...>, <PostwaveStub...>, ...], 
         | 
| 210 | 
            +
            #   2024 => 
         | 
| 211 | 
            +
            #     [<PostwaveStub...>, <PostwaveStub...>]
         | 
| 212 | 
            +
            # }
         | 
| 213 | 
            +
            ```
         | 
| 214 | 
            +
             | 
| 215 | 
            +
            You can pass in a `by: "month"` parameter to further subdivide the archive by month.
         | 
| 216 | 
            +
             | 
| 217 | 
            +
            ```ruby
         | 
| 218 | 
            +
            archive = postwave_client.archive(by: "month")
         | 
| 219 | 
            +
             | 
| 220 | 
            +
            # {
         | 
| 221 | 
            +
            #   2025 =>
         | 
| 222 | 
            +
            #     1 => [<PostwaveStub...>, <PostwaveStub...>],
         | 
| 223 | 
            +
            #     2 => [<PostwaveStub...>, <PostwaveStub...>]
         | 
| 224 | 
            +
            #   2024 =>
         | 
| 225 | 
            +
            #     11 => [<PostwaveStub...>, <PostwaveStub...>],
         | 
| 226 | 
            +
            #     12 => [<PostwaveStub...>, <PostwaveStub...>]
         | 
| 227 | 
            +
            # }
         | 
| 228 | 
            +
            ```
         | 
| 229 | 
            +
             | 
| 184 230 | 
             
            ## Run Tests
         | 
| 185 231 |  | 
| 186 232 | 
             
            ```
         | 
    
        data/lib/postwave/client.rb
    CHANGED
    
    | @@ -8,6 +8,7 @@ require "yaml" | |
| 8 8 |  | 
| 9 9 | 
             
            Postwave::PostStub = Struct.new(:date, :title, :slug)
         | 
| 10 10 | 
             
            Postwave::Tag = Struct.new(:name, :count, :post_slugs)
         | 
| 11 | 
            +
            Postwave::Pagination = Struct.new(:current_page, :prev_page, :next_page, :total_pages)
         | 
| 11 12 |  | 
| 12 13 | 
             
            module Postwave
         | 
| 13 14 | 
             
              class Client
         | 
| @@ -29,6 +30,18 @@ module Postwave | |
| 29 30 | 
             
                  working_index[offset, count]
         | 
| 30 31 | 
             
                end
         | 
| 31 32 |  | 
| 33 | 
            +
                def archive(by: "year")
         | 
| 34 | 
            +
                  working_index = @full_index || get_full_index
         | 
| 35 | 
            +
                  post_hash = posts.group_by { |post| post.date.year }.transform_values { |posts| posts.sort_by(&:date) }
         | 
| 36 | 
            +
                  if by == "month"
         | 
| 37 | 
            +
                    post_hash.each do |key, value|
         | 
| 38 | 
            +
                      post_hash[key] = value.group_by { |post| post.date.month }
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  post_hash
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 32 45 | 
             
                # returns: a post - Postwave::Post
         | 
| 33 46 | 
             
                def post(slug)
         | 
| 34 47 | 
             
                  post_file_path = Dir["#{File.join(@blog_root, POSTS_DIR)}/*#{slug}.md"].first
         | 
| @@ -69,6 +82,16 @@ module Postwave | |
| 69 82 | 
             
                  rss.read
         | 
| 70 83 | 
             
                end
         | 
| 71 84 |  | 
| 85 | 
            +
                # reuturns: a Pagination Struct - <struct Pagination current_page=3, prev_page=2, next_page=4, total_pages=20>
         | 
| 86 | 
            +
                def pagination(current_page: 1, per_page: 10)
         | 
| 87 | 
            +
                  summary = @blog_summary || get_summary
         | 
| 88 | 
            +
                  total_pages = (summary[:post_count].to_f / per_page).ceil
         | 
| 89 | 
            +
                  in_bound_current = current_page.clamp(1, total_pages)
         | 
| 90 | 
            +
                  prev_page = in_bound_current > 1 ? in_bound_current - 1 : nil
         | 
| 91 | 
            +
                  next_page = in_bound_current < total_pages ? in_bound_current + 1 : nil
         | 
| 92 | 
            +
                  Postwave::Pagination.new(in_bound_current, prev_page, next_page, total_pages)
         | 
| 93 | 
            +
                end
         | 
| 94 | 
            +
             | 
| 72 95 | 
             
                private
         | 
| 73 96 |  | 
| 74 97 | 
             
                def is_valid_config?(config_path)
         | 
    
        data/lib/postwave/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: postwave
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Dave Schwantes
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2025- | 
| 11 | 
            +
            date: 2025-03-13 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: redcarpet
         |