html_surgeon 0.3.0 → 0.4.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 +14 -0
- data/lib/html_surgeon/change_set.rb +30 -6
- data/lib/html_surgeon/version.rb +1 -1
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 6988528869b8d0783dc66a3fc95ac318a39f44f4
         | 
| 4 | 
            +
              data.tar.gz: 9b0a847987cf59900c58d88d68edf65a78c5d2cd
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 9e5ffbded35f90903bc1aaa0af358dd903fa99024f122ff20195b4c91b667d8842136aa31546422ec12ee81d045be4d13d7ac6562c0844e3314ac260778b9ee8
         | 
| 7 | 
            +
              data.tar.gz: 8baf36739a718bb7eb98a0208ebb92ef2564a8349492062cb5bac7275252d7449d8802a00c56481c45b711e26a54629f779a88db28b3cbd9ff5ec9e8464dec2d
         | 
    
        data/README.md
    CHANGED
    
    | @@ -165,6 +165,16 @@ change_set = surgeon.css('div.to-be-changed') | |
| 165 165 | 
             
            change_set = surgeon.xpath("span") # note that we use Nokogiri's HTML Fragment and the use of self is special.
         | 
| 166 166 | 
             
            ```
         | 
| 167 167 |  | 
| 168 | 
            +
            ### Refining the selection
         | 
| 169 | 
            +
             | 
| 170 | 
            +
            we can skip some nodes based on callbacks added to the Change Set using `select` and `reject` methods.
         | 
| 171 | 
            +
             | 
| 172 | 
            +
            ```ruby
         | 
| 173 | 
            +
            change_set = surgeon.css('.to-be-changed')
         | 
| 174 | 
            +
            change_set.reject { |node| node.name == 'div' }.select { |node| node.get_attribute('class').to_s.split(' ').include? 'yeah-do-it' }
         | 
| 175 | 
            +
            change_set.run # => nodes skipped if reject callback return truthy or if select callback return falsey 
         | 
| 176 | 
            +
            ```
         | 
| 177 | 
            +
             | 
| 168 178 | 
             
            ## Available Changes
         | 
| 169 179 |  | 
| 170 180 | 
             
            ### Replace Tag Name
         | 
| @@ -228,6 +238,10 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/eturin | |
| 228 238 |  | 
| 229 239 | 
             
            ## CHANGESET
         | 
| 230 240 |  | 
| 241 | 
            +
            ### v0.4.0
         | 
| 242 | 
            +
             | 
| 243 | 
            +
            - added `select` and `reject` callbacks to Change Set, based on blocks with `node` as single argument
         | 
| 244 | 
            +
             | 
| 231 245 | 
             
            ### v0.3.0
         | 
| 232 246 |  | 
| 233 247 | 
             
            - added fluid ChangeSet ID setter
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            module HtmlSurgeon
         | 
| 2 2 |  | 
| 3 3 | 
             
              class ChangeSet
         | 
| 4 | 
            -
                attr_reader :node_set, :base, :change_list, :run_time
         | 
| 4 | 
            +
                attr_reader :node_set, :base, :change_list, :run_time, :refinement_callbacks
         | 
| 5 5 |  | 
| 6 6 | 
             
                def self.create(node_set, base)
         | 
| 7 7 | 
             
                  new_class.new node_set, base
         | 
| @@ -16,11 +16,12 @@ module HtmlSurgeon | |
| 16 16 | 
             
                end
         | 
| 17 17 |  | 
| 18 18 | 
             
                def initialize(node_set, base)
         | 
| 19 | 
            -
                  @node_set | 
| 20 | 
            -
                  @base | 
| 21 | 
            -
                  @change_list | 
| 22 | 
            -
                  @id | 
| 23 | 
            -
                  @run_time | 
| 19 | 
            +
                  @node_set             = node_set
         | 
| 20 | 
            +
                  @base                 = base
         | 
| 21 | 
            +
                  @change_list          = []
         | 
| 22 | 
            +
                  @id                   = SecureRandom.uuid
         | 
| 23 | 
            +
                  @run_time             = nil
         | 
| 24 | 
            +
                  @refinement_callbacks = []
         | 
| 24 25 | 
             
                end
         | 
| 25 26 |  | 
| 26 27 | 
             
                delegate :audit?, :html, to: :base
         | 
| @@ -51,6 +52,16 @@ module HtmlSurgeon | |
| 51 52 | 
             
                  change_list.map &:log
         | 
| 52 53 | 
             
                end
         | 
| 53 54 |  | 
| 55 | 
            +
                def select(&block)
         | 
| 56 | 
            +
                  refinement_callbacks << [:select, block]
         | 
| 57 | 
            +
                  self
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                def reject(&block)
         | 
| 61 | 
            +
                  refinement_callbacks << [:reject, block]
         | 
| 62 | 
            +
                  self
         | 
| 63 | 
            +
                end
         | 
| 64 | 
            +
             | 
| 54 65 | 
             
                # CHANGES
         | 
| 55 66 |  | 
| 56 67 | 
             
                private
         | 
| @@ -61,6 +72,19 @@ module HtmlSurgeon | |
| 61 72 | 
             
                end
         | 
| 62 73 |  | 
| 63 74 | 
             
                def apply_on_node(node)
         | 
| 75 | 
            +
                  refinement_callbacks.each do |(type, refinement)|
         | 
| 76 | 
            +
                    case type
         | 
| 77 | 
            +
                    when :select
         | 
| 78 | 
            +
                      return false unless refinement.call(node)
         | 
| 79 | 
            +
                    when :reject
         | 
| 80 | 
            +
                      return false if refinement.call(node)
         | 
| 81 | 
            +
                    end
         | 
| 82 | 
            +
                  end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                  do_apply_on_node(node)
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                def do_apply_on_node(node)
         | 
| 64 88 | 
             
                  change_list.each do |change|
         | 
| 65 89 | 
             
                    change.apply(node)
         | 
| 66 90 | 
             
                  end
         | 
    
        data/lib/html_surgeon/version.rb
    CHANGED