marksmith 0.1.3 → 0.2.0
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 +21 -21
- data/app/assets/javascripts/list_continuation_controller-full.esm.js +1 -1
- data/app/assets/javascripts/list_continuation_controller-no-stimulus.esm.js +1 -1
- data/app/assets/javascripts/marksmith_controller-full.esm.js +1 -1
- data/app/assets/javascripts/marksmith_controller-no-stimulus.esm.js +1 -1
- data/app/components/marksmith/markdown_field/show_component.html.erb +1 -1
- data/app/controllers/marksmith/markdown_previews_controller.rb +1 -1
- data/app/models/marksmith/renderer.rb +20 -4
- data/lib/marksmith/configuration.rb +1 -0
- data/lib/marksmith/helper.rb +1 -1
- data/lib/marksmith/version.rb +1 -1
- metadata +2 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: bd1c156bdd01e593e1ed5a364b646b028e736a7e0d67763110cce1e08ccb4d08
         | 
| 4 | 
            +
              data.tar.gz: 12cdfb76d754cd011892b76790784cc122f5500213ab5f18318e353fdd531013
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c5908c41dc5a0b241a3db237ad8c6bf08e8868cb57517ff621bafb47564fd328ab7cb24b225c638b252d24e0c44852ea285af5aa95709b0fc0ab9e12aaf4ffe1
         | 
| 7 | 
            +
              data.tar.gz: 5437ee09dccfd514e25d2fcd4874acb7cf126fe5ae26d4839ae6061daedcbdeabdb259a6dba550fdfa87b9d44d3a3f769046d17a50539a2d545390ac958ce57b
         | 
    
        data/README.md
    CHANGED
    
    | @@ -154,8 +154,8 @@ end | |
| 154 154 |  | 
| 155 155 | 
             
            ## Built-in preview renderer
         | 
| 156 156 |  | 
| 157 | 
            -
            The renderer is powered by [`Redcarpet`](https://github.com/vmg/redcarpet).
         | 
| 158 | 
            -
            It supports basic styles  | 
| 157 | 
            +
            The renderer is powered by [`Commonmarker`](https://github.com/gjtorikian/commonmarker) by default but it can be changed to [`Redcarpet`](https://github.com/vmg/redcarpet) in the configuration or add your own logic by customizing the `Marksmith::Renderer` model.
         | 
| 158 | 
            +
            It supports basic styles like headings, `strong`, `italic` and others.
         | 
| 159 159 |  | 
| 160 160 | 
             
            In your `show.html.erb` view or the place where you want to render the compiled markup use the `marksmithed` helper and it will run the content through the renderer.
         | 
| 161 161 |  | 
| @@ -172,31 +172,31 @@ In your `show.html.erb` view or the place where you want to render the compiled | |
| 172 172 | 
             
            > sanitize(body, tags: %w(table th tr td span) + ActionView::Helpers::SanitizeHelper.sanitizer_vendor.safe_list_sanitizer.allowed_tags.to_a)
         | 
| 173 173 | 
             
            > ```
         | 
| 174 174 |  | 
| 175 | 
            -
             | 
| 175 | 
            +
            ## Customize the renderer
         | 
| 176 176 |  | 
| 177 | 
            -
             | 
| 177 | 
            +
            Marksmith comes with a default renderer that uses `Commonmarker` by default but it can be changed to `Redcarpet` in the configuration.
         | 
| 178 178 |  | 
| 179 179 | 
             
            ```ruby
         | 
| 180 | 
            -
            #  | 
| 181 | 
            -
             | 
| 180 | 
            +
            # config/initializers/marksmith.rb
         | 
| 181 | 
            +
            Marksmith.configure do |config|
         | 
| 182 | 
            +
              config.parser = "redcarpet"
         | 
| 183 | 
            +
            end
         | 
| 184 | 
            +
            ```
         | 
| 185 | 
            +
             | 
| 186 | 
            +
            ### Add your own renderer
         | 
| 182 187 |  | 
| 188 | 
            +
            You can completely customize the renderer by overriding the `Marksmith::Renderer` model.
         | 
| 189 | 
            +
             | 
| 190 | 
            +
            ```ruby
         | 
| 191 | 
            +
            # app/models/marksmith/renderer.rb
         | 
| 183 192 | 
             
            module Marksmith
         | 
| 184 193 | 
             
              class Renderer
         | 
| 185 | 
            -
                def  | 
| 186 | 
            -
                   | 
| 187 | 
            -
             | 
| 188 | 
            -
             | 
| 189 | 
            -
             | 
| 190 | 
            -
             | 
| 191 | 
            -
                    space_after_headers: true,
         | 
| 192 | 
            -
                    hard_wrap: true,
         | 
| 193 | 
            -
                    autolink: true,
         | 
| 194 | 
            -
                    strikethrough: true,
         | 
| 195 | 
            -
                    underline: true,
         | 
| 196 | 
            -
                    highlight: true,
         | 
| 197 | 
            -
                    quote: true,
         | 
| 198 | 
            -
                    with_toc_data: true
         | 
| 199 | 
            -
                  )
         | 
| 194 | 
            +
                def initialize(body:)
         | 
| 195 | 
            +
                  @body = body
         | 
| 196 | 
            +
                end
         | 
| 197 | 
            +
             | 
| 198 | 
            +
                def render
         | 
| 199 | 
            +
                  # Your custom renderer logic here
         | 
| 200 200 | 
             
                end
         | 
| 201 201 | 
             
              end
         | 
| 202 202 | 
             
            end
         | 
| @@ -1,3 +1,3 @@ | |
| 1 1 | 
             
            <%= field_wrapper **field_wrapper_args, full_width: true do %>
         | 
| 2 | 
            -
              <%= render partial: "marksmith/shared/rendered_body", locals: { body: Marksmith::Renderer.new | 
| 2 | 
            +
              <%= render partial: "marksmith/shared/rendered_body", locals: { body: Marksmith::Renderer.new(body: @field.value).render } %>
         | 
| 3 3 | 
             
            <% end %>
         | 
| @@ -1,8 +1,24 @@ | |
| 1 | 
            -
            require "redcarpet"
         | 
| 2 | 
            -
             | 
| 3 1 | 
             
            module Marksmith
         | 
| 4 2 | 
             
              class Renderer
         | 
| 5 | 
            -
                def  | 
| 3 | 
            +
                def initialize(body:)
         | 
| 4 | 
            +
                  @body = body
         | 
| 5 | 
            +
                end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def render
         | 
| 8 | 
            +
                  if Marksmith.configuration.parser == "commonmarker"
         | 
| 9 | 
            +
                    render_commonmarker
         | 
| 10 | 
            +
                  else
         | 
| 11 | 
            +
                    render_redcarpet
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def render_commonmarker
         | 
| 16 | 
            +
                  # commonmarker expects an utf-8 encoded string
         | 
| 17 | 
            +
                  body = @body.to_s.dup.force_encoding('utf-8')
         | 
| 18 | 
            +
                  Commonmarker.to_html(body)
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def render_redcarpet
         | 
| 6 22 | 
             
                  ::Redcarpet::Markdown.new(
         | 
| 7 23 | 
             
                    ::Redcarpet::Render::HTML,
         | 
| 8 24 | 
             
                    tables: true,
         | 
| @@ -16,7 +32,7 @@ module Marksmith | |
| 16 32 | 
             
                    highlight: true,
         | 
| 17 33 | 
             
                    quote: true,
         | 
| 18 34 | 
             
                    with_toc_data: true
         | 
| 19 | 
            -
                  )
         | 
| 35 | 
            +
                  ).render(@body)
         | 
| 20 36 | 
             
                end
         | 
| 21 37 | 
             
              end
         | 
| 22 38 | 
             
            end
         | 
    
        data/lib/marksmith/helper.rb
    CHANGED
    
    
    
        data/lib/marksmith/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: marksmith
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Adrian Marin
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2025-02- | 
| 11 | 
            +
            date: 2025-02-15 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activesupport
         | 
| @@ -24,20 +24,6 @@ dependencies: | |
| 24 24 | 
             
                - - ">="
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: '0'
         | 
| 27 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            -
              name: redcarpet
         | 
| 29 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            -
                requirements:
         | 
| 31 | 
            -
                - - ">="
         | 
| 32 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: '0'
         | 
| 34 | 
            -
              type: :runtime
         | 
| 35 | 
            -
              prerelease: false
         | 
| 36 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            -
                requirements:
         | 
| 38 | 
            -
                - - ">="
         | 
| 39 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: '0'
         | 
| 41 27 | 
             
            description: Marksmith is a GitHub-style markdown editor for Ruby on Rails applications.
         | 
| 42 28 | 
             
            email:
         | 
| 43 29 | 
             
            - adrian@adrianthedev.com
         |