mindwords 0.5.1 → 0.5.6
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
 - checksums.yaml.gz.sig +0 -0
 - data.tar.gz.sig +0 -0
 - data/lib/mindwords.rb +99 -12
 - metadata +2 -2
 - metadata.gz.sig +0 -0
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 9278b3fbcf3da1caed6dd21c274bb8b26e12dec525d05ecf322965b083e8c884
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 8c9b4a404897fd119b64f13e7140daecc8eb55f404595e001508b0b8dd031b7d
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 5d4aa5d8a2d6fbc11492518c9be080d98adf122240867baea88d94dfb2b87781bb0e6f94aa5ea7dc632e9be6525c2a3fe02b854b26d86f57accef214b533a904
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 96d3d52f2c88e2419aee86737469a837c51985fc716277cd97694f5f32905ee349e7bbbb40e63e121555cdb81c5b90d5b06baabc28b7a1011a00c98fbb584a35
         
     | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | 
         Binary file 
     | 
    
        data.tar.gz.sig
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/mindwords.rb
    CHANGED
    
    | 
         @@ -20,26 +20,84 @@ class MindWords 
     | 
|
| 
       20 
20 
     | 
    
         
             
              using ColouredText
         
     | 
| 
       21 
21 
     | 
    
         
             
              using HashCopy
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
              attr_accessor :lines
         
     | 
| 
      
 23 
     | 
    
         
            +
              attr_accessor :lines, :filepath
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
              def initialize(raws, parent: nil, debug: false)
         
     | 
| 
      
 25 
     | 
    
         
            +
              def initialize(raws='', parent: nil, debug: false)
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
                @parent, @debug = parent, debug
         
     | 
| 
      
 28 
     | 
    
         
            +
                    
         
     | 
| 
      
 29 
     | 
    
         
            +
                s, type = RXFHelper.read raws
         
     | 
| 
       28 
30 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
                 
     | 
| 
      
 31 
     | 
    
         
            +
                @filepath = raws if type == :file or type == :dfs
         
     | 
| 
       30 
32 
     | 
    
         
             
                @lines = s.strip.gsub(/^\n/,'').lines
         
     | 
| 
       31 
33 
     | 
    
         
             
                @lines.shift if @lines.first =~ /<\?mindwords\?>/
         
     | 
| 
       32 
34 
     | 
    
         | 
| 
       33 
35 
     | 
    
         
             
              end
         
     | 
| 
       34 
36 
     | 
    
         | 
| 
      
 37 
     | 
    
         
            +
              def add(line)
         
     | 
| 
      
 38 
     | 
    
         
            +
                @lines << line
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
              
         
     | 
| 
      
 41 
     | 
    
         
            +
              def breadcrumb()
         
     | 
| 
      
 42 
     | 
    
         
            +
                @parent.attributes[:breadcrumb].split(/ +\/ +/) if @parent
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
                
         
     | 
| 
      
 45 
     | 
    
         
            +
              
         
     | 
| 
       35 
46 
     | 
    
         
             
              def element(id)
         
     | 
| 
       36 
47 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
                doc = Rexle.new( 
     | 
| 
      
 48 
     | 
    
         
            +
                doc = Rexle.new(to_xml())
         
     | 
| 
       38 
49 
     | 
    
         
             
                e =  doc.root.element("//*[@id='#{id}']")
         
     | 
| 
       39 
50 
     | 
    
         
             
                #e.attributes[:breadcrumb].to_s if e
         
     | 
| 
       40 
51 
     | 
    
         | 
| 
       41 
52 
     | 
    
         
             
              end
         
     | 
| 
      
 53 
     | 
    
         
            +
              
         
     | 
| 
      
 54 
     | 
    
         
            +
              def hashtags()
         
     | 
| 
      
 55 
     | 
    
         
            +
                @parent.attributes[:hashtags].split if @parent
         
     | 
| 
      
 56 
     | 
    
         
            +
              end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
              def save(file=@filepath)
         
     | 
| 
      
 59 
     | 
    
         
            +
                
         
     | 
| 
      
 60 
     | 
    
         
            +
                return if @lines.empty?
         
     | 
| 
      
 61 
     | 
    
         
            +
                
         
     | 
| 
      
 62 
     | 
    
         
            +
                puts 'before save' if @debug
         
     | 
| 
      
 63 
     | 
    
         
            +
                File.write file, to_s()
         
     | 
| 
      
 64 
     | 
    
         
            +
                
         
     | 
| 
      
 65 
     | 
    
         
            +
              end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
              # Accepts a list of words with the aim of returning a MindWords document 
         
     | 
| 
      
 68 
     | 
    
         
            +
              # using matched words with hashtags from the existing MindWords document.
         
     | 
| 
      
 69 
     | 
    
         
            +
              #
         
     | 
| 
      
 70 
     | 
    
         
            +
              def reflect(raws)
         
     | 
| 
      
 71 
     | 
    
         
            +
                
         
     | 
| 
      
 72 
     | 
    
         
            +
                h = to_h
         
     | 
| 
      
 73 
     | 
    
         
            +
                
         
     | 
| 
      
 74 
     | 
    
         
            +
                missing_words = []
         
     | 
| 
      
 75 
     | 
    
         
            +
                
         
     | 
| 
      
 76 
     | 
    
         
            +
                # add the tags from the main list
         
     | 
| 
      
 77 
     | 
    
         
            +
                a = raws.strip.lines.map do |x| 
         
     | 
| 
      
 78 
     | 
    
         
            +
                  if h[x.chomp] then
         
     | 
| 
      
 79 
     | 
    
         
            +
                    [x.chomp, h[x.chomp]]
         
     | 
| 
      
 80 
     | 
    
         
            +
                  else
         
     | 
| 
      
 81 
     | 
    
         
            +
                    missing_words << x
         
     | 
| 
      
 82 
     | 
    
         
            +
                    nil
         
     | 
| 
      
 83 
     | 
    
         
            +
                  end
         
     | 
| 
      
 84 
     | 
    
         
            +
                end.compact
         
     | 
| 
       42 
85 
     | 
    
         | 
| 
      
 86 
     | 
    
         
            +
                # add any linkage words from the tags
         
     | 
| 
      
 87 
     | 
    
         
            +
                #
         
     | 
| 
      
 88 
     | 
    
         
            +
                a.map(&:last).flatten(1).each do |s|
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                  a << [s, h[s]] if h[s]
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
                # remove suplicates lines and transform it into a raw mindwords format
         
     | 
| 
      
 95 
     | 
    
         
            +
                #
         
     | 
| 
      
 96 
     | 
    
         
            +
                raws3 = a.uniq.map {|s,tags| [s, tags.map {|x| '#' + x }.join(' ')].join(' ') }.join("\n")
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
                [MindWords.new(raws3), missing_words]
         
     | 
| 
      
 99 
     | 
    
         
            +
                
         
     | 
| 
      
 100 
     | 
    
         
            +
              end
         
     | 
| 
       43 
101 
     | 
    
         | 
| 
       44 
102 
     | 
    
         
             
              def search(keyword)
         
     | 
| 
       45 
103 
     | 
    
         | 
| 
         @@ -60,7 +118,11 @@ class MindWords 
     | 
|
| 
       60 
118 
     | 
    
         | 
| 
       61 
119 
     | 
    
         
             
                a2 = a.sort_by(&:last).map(&:first)
         
     | 
| 
       62 
120 
     | 
    
         
             
                puts 'a2: ' + a2.inspect if @debug
         
     | 
| 
       63 
     | 
    
         
            -
                 
     | 
| 
      
 121 
     | 
    
         
            +
                e = element(keyword.downcase.gsub(/ +/,'-'))
         
     | 
| 
      
 122 
     | 
    
         
            +
                
         
     | 
| 
      
 123 
     | 
    
         
            +
                return nil if e.nil?
         
     | 
| 
      
 124 
     | 
    
         
            +
                
         
     | 
| 
      
 125 
     | 
    
         
            +
                MindWords.new(a2.join, parent: e, debug: @debug)
         
     | 
| 
       64 
126 
     | 
    
         | 
| 
       65 
127 
     | 
    
         
             
              end
         
     | 
| 
       66 
128 
     | 
    
         | 
| 
         @@ -102,11 +164,20 @@ class MindWords 
     | 
|
| 
       102 
164 
     | 
    
         
             
                @lines = tag_sort().lines
         
     | 
| 
       103 
165 
     | 
    
         
             
                self
         
     | 
| 
       104 
166 
     | 
    
         
             
              end
         
     | 
| 
      
 167 
     | 
    
         
            +
             
     | 
| 
      
 168 
     | 
    
         
            +
              def to_a()
         
     | 
| 
      
 169 
     | 
    
         
            +
                
         
     | 
| 
      
 170 
     | 
    
         
            +
                @lines.map do |x| 
         
     | 
| 
      
 171 
     | 
    
         
            +
                  s, rawtags = x.split(/(?= #)/,2)
         
     | 
| 
      
 172 
     | 
    
         
            +
                  [s, rawtags.scan(/(?<=#)\w+/)]
         
     | 
| 
      
 173 
     | 
    
         
            +
                end
         
     | 
| 
      
 174 
     | 
    
         
            +
                
         
     | 
| 
      
 175 
     | 
    
         
            +
              end
         
     | 
| 
       105 
176 
     | 
    
         | 
| 
       106 
177 
     | 
    
         
             
              def to_h()
         
     | 
| 
       107 
     | 
    
         
            -
                 
     | 
| 
      
 178 
     | 
    
         
            +
                to_a.to_h
         
     | 
| 
       108 
179 
     | 
    
         
             
              end
         
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
      
 180 
     | 
    
         
            +
                
         
     | 
| 
       110 
181 
     | 
    
         
             
              def to_hashtags()
         
     | 
| 
       111 
182 
     | 
    
         
             
                @hashtags
         
     | 
| 
       112 
183 
     | 
    
         
             
              end
         
     | 
| 
         @@ -116,10 +187,12 @@ class MindWords 
     | 
|
| 
       116 
187 
     | 
    
         
             
                sort ? a2tree(tree_sort(LineTree.new(@outline).to_a)) : @outline
         
     | 
| 
       117 
188 
     | 
    
         
             
              end
         
     | 
| 
       118 
189 
     | 
    
         | 
| 
      
 190 
     | 
    
         
            +
              alias to_tree to_outline
         
     | 
| 
      
 191 
     | 
    
         
            +
              
         
     | 
| 
       119 
192 
     | 
    
         
             
              def to_s(colour: false)
         
     | 
| 
       120 
193 
     | 
    
         | 
| 
       121 
194 
     | 
    
         
             
                header = "<?mindwords?>\n\n"
         
     | 
| 
       122 
     | 
    
         
            -
                return header + @lines.join unless colour
         
     | 
| 
      
 195 
     | 
    
         
            +
                return header + @lines.map(&:chomp).join("\n") unless colour
         
     | 
| 
       123 
196 
     | 
    
         | 
| 
       124 
197 
     | 
    
         
             
                body = @lines.map do |x|
         
     | 
| 
       125 
198 
     | 
    
         
             
                    title, hashtags = x.split(/(?=#)/,2)
         
     | 
| 
         @@ -128,13 +201,27 @@ class MindWords 
     | 
|
| 
       128 
201 
     | 
    
         | 
| 
       129 
202 
     | 
    
         
             
                header + body
         
     | 
| 
       130 
203 
     | 
    
         | 
| 
       131 
     | 
    
         
            -
              end
         
     | 
| 
      
 204 
     | 
    
         
            +
              end  
         
     | 
| 
       132 
205 
     | 
    
         | 
| 
       133 
206 
     | 
    
         
             
              def to_words()
         
     | 
| 
       134 
     | 
    
         
            -
                 
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
      
 207 
     | 
    
         
            +
                
         
     | 
| 
      
 208 
     | 
    
         
            +
                h = {}
         
     | 
| 
      
 209 
     | 
    
         
            +
                
         
     | 
| 
      
 210 
     | 
    
         
            +
                Rexle.new(to_xml).root.each_recursive do |e|
         
     | 
| 
      
 211 
     | 
    
         
            +
                  
         
     | 
| 
      
 212 
     | 
    
         
            +
                  h[e.attributes[:title]] = {
         
     | 
| 
      
 213 
     | 
    
         
            +
                    breadcrumb: e.attributes[:breadcrumb], 
         
     | 
| 
      
 214 
     | 
    
         
            +
                    hashtags: e.attributes[:hashtags]
         
     | 
| 
      
 215 
     | 
    
         
            +
                  }
         
     | 
| 
      
 216 
     | 
    
         
            +
                  
         
     | 
| 
      
 217 
     | 
    
         
            +
                end
         
     | 
| 
      
 218 
     | 
    
         
            +
                
         
     | 
| 
      
 219 
     | 
    
         
            +
                h
         
     | 
| 
      
 220 
     | 
    
         
            +
                
         
     | 
| 
      
 221 
     | 
    
         
            +
              end  
         
     | 
| 
       136 
222 
     | 
    
         | 
| 
       137 
223 
     | 
    
         
             
              def to_xml()
         
     | 
| 
      
 224 
     | 
    
         
            +
                build() unless @xml
         
     | 
| 
       138 
225 
     | 
    
         
             
                @xml
         
     | 
| 
       139 
226 
     | 
    
         
             
              end
         
     | 
| 
       140 
227 
     | 
    
         | 
| 
         @@ -198,7 +285,7 @@ class MindWords 
     | 
|
| 
       198 
285 
     | 
    
         | 
| 
       199 
286 
     | 
    
         | 
| 
       200 
287 
     | 
    
         
             
                node = if @parent then
         
     | 
| 
       201 
     | 
    
         
            -
                  found = doc.root.element('//' + @parent)
         
     | 
| 
      
 288 
     | 
    
         
            +
                  found = doc.root.element('//' + @parent.name)
         
     | 
| 
       202 
289 
     | 
    
         
             
                  found ? found : doc.root
         
     | 
| 
       203 
290 
     | 
    
         
             
                else
         
     | 
| 
       204 
291 
     | 
    
         
             
                  doc.root
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: mindwords
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.5. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.5.6
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - James Robertson
         
     | 
| 
         @@ -35,7 +35,7 @@ cert_chain: 
     | 
|
| 
       35 
35 
     | 
    
         
             
              aWH7D2AmhOpqNwWnPHzWR/yzpigAVTrvpHfRxZleQj6Z/090nIH2KR0RdioMmPFq
         
     | 
| 
       36 
36 
     | 
    
         
             
              3+574KQzs/gR9Y5a+iMcvHRN
         
     | 
| 
       37 
37 
     | 
    
         
             
              -----END CERTIFICATE-----
         
     | 
| 
       38 
     | 
    
         
            -
            date: 2021- 
     | 
| 
      
 38 
     | 
    
         
            +
            date: 2021-02-25 00:00:00.000000000 Z
         
     | 
| 
       39 
39 
     | 
    
         
             
            dependencies:
         
     | 
| 
       40 
40 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       41 
41 
     | 
    
         
             
              name: line-tree
         
     | 
    
        metadata.gz.sig
    CHANGED
    
    | 
         Binary file 
     |