vedeu 0.0.41 → 0.0.42
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/deps.md +37 -41
 - data/lib/vedeu/models/composition.rb +8 -0
 - data/lib/vedeu/output/render_interface.rb +34 -1
 - data/lib/vedeu/parsing/parser.rb +2 -2
 - data/test/lib/vedeu/models/composition_test.rb +96 -69
 - data/test/lib/vedeu/models/interface_test.rb +14 -14
 - data/test/lib/vedeu/models/line_test.rb +2 -2
 - data/test/lib/vedeu/output/render_interface_test.rb +16 -5
 - data/vedeu.gemspec +1 -1
 - metadata +2 -5
 - data/lib/vedeu/parsing/compositor.rb +0 -25
 - data/test/lib/vedeu/parsing/compositor_test.rb +0 -42
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 0a046f5b44b63444927dcb96378474808444b2be
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 70e1e365e7727b181d8fbcc813b7843cfc4ce9d3
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 5265ac3784c962e2405ed0295f66b3b54929272a48745b713c6c8415ecd30763ef29c125f4799ffd84db8063a4d4140dc44e886278ddcc7ad9554e4d9193213f
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 8e6a2a56e74dec0fb18f65a3676047a25266be8a7f7302b1bd87df7b8cfbfc72537ca6e88233627985537c20a01db16abb986942f5e89f74d5c72de898bc2ae8
         
     | 
    
        data/deps.md
    CHANGED
    
    | 
         @@ -22,9 +22,6 @@ Colour 
     | 
|
| 
       22 
22 
     | 
    
         
             
            Composition
         
     | 
| 
       23 
23 
     | 
    
         
             
              InterfaceCollection
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
            Compositor
         
     | 
| 
       26 
     | 
    
         
            -
              Composition
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
25 
     | 
    
         
             
            Configuration
         
     | 
| 
       29 
26 
     | 
    
         | 
| 
       30 
27 
     | 
    
         
             
            Geometry
         
     | 
| 
         @@ -74,7 +71,7 @@ LineCollection 
     | 
|
| 
       74 
71 
     | 
    
         
             
            Menu
         
     | 
| 
       75 
72 
     | 
    
         | 
| 
       76 
73 
     | 
    
         
             
            Parser
         
     | 
| 
       77 
     | 
    
         
            -
               
     | 
| 
      
 74 
     | 
    
         
            +
              Composition
         
     | 
| 
       78 
75 
     | 
    
         
             
              HashParser
         
     | 
| 
       79 
76 
     | 
    
         
             
              JSONParser
         
     | 
| 
       80 
77 
     | 
    
         | 
| 
         @@ -143,51 +140,50 @@ Launcher 
     | 
|
| 
       143 
140 
     | 
    
         
             
                      Translator
         
     | 
| 
       144 
141 
     | 
    
         
             
                Process
         
     | 
| 
       145 
142 
     | 
    
         
             
                  Parser
         
     | 
| 
       146 
     | 
    
         
            -
                     
     | 
| 
       147 
     | 
    
         
            -
                       
     | 
| 
       148 
     | 
    
         
            -
                         
     | 
| 
       149 
     | 
    
         
            -
                           
     | 
| 
       150 
     | 
    
         
            -
                             
     | 
| 
       151 
     | 
    
         
            -
             
     | 
| 
       152 
     | 
    
         
            -
                               
     | 
| 
      
 143 
     | 
    
         
            +
                    Composition
         
     | 
| 
      
 144 
     | 
    
         
            +
                      InterfaceCollection
         
     | 
| 
      
 145 
     | 
    
         
            +
                        Persistence
         
     | 
| 
      
 146 
     | 
    
         
            +
                          Interface
         
     | 
| 
      
 147 
     | 
    
         
            +
                            ClearInterface
         
     | 
| 
      
 148 
     | 
    
         
            +
                            Geometry
         
     | 
| 
      
 149 
     | 
    
         
            +
                              Esc
         
     | 
| 
      
 150 
     | 
    
         
            +
                                Translator
         
     | 
| 
      
 151 
     | 
    
         
            +
                              Terminal
         
     | 
| 
       153 
152 
     | 
    
         
             
                                Esc
         
     | 
| 
       154 
153 
     | 
    
         
             
                                  Translator
         
     | 
| 
       155 
     | 
    
         
            -
             
     | 
| 
       156 
     | 
    
         
            -
             
     | 
| 
       157 
     | 
    
         
            -
             
     | 
| 
       158 
     | 
    
         
            -
             
     | 
| 
       159 
     | 
    
         
            -
             
     | 
| 
       160 
     | 
    
         
            -
                                Line
         
     | 
| 
       161 
     | 
    
         
            -
                                  Presentation
         
     | 
| 
       162 
     | 
    
         
            -
                                    Colour
         
     | 
| 
       163 
     | 
    
         
            -
                                      Esc
         
     | 
| 
       164 
     | 
    
         
            -
                                        Translator
         
     | 
| 
       165 
     | 
    
         
            -
                                  StreamCollection
         
     | 
| 
       166 
     | 
    
         
            -
                                    Collection
         
     | 
| 
       167 
     | 
    
         
            -
                                    Stream
         
     | 
| 
       168 
     | 
    
         
            -
                                      Presentation
         
     | 
| 
       169 
     | 
    
         
            -
                                        Colour
         
     | 
| 
       170 
     | 
    
         
            -
                                          Esc
         
     | 
| 
       171 
     | 
    
         
            -
                                            Translator
         
     | 
| 
       172 
     | 
    
         
            -
                                      Style
         
     | 
| 
       173 
     | 
    
         
            -
                                        Esc
         
     | 
| 
       174 
     | 
    
         
            -
                                          Translator
         
     | 
| 
       175 
     | 
    
         
            -
                                  Style
         
     | 
| 
      
 154 
     | 
    
         
            +
                            LineCollection
         
     | 
| 
      
 155 
     | 
    
         
            +
                              Collection
         
     | 
| 
      
 156 
     | 
    
         
            +
                              Line
         
     | 
| 
      
 157 
     | 
    
         
            +
                                Presentation
         
     | 
| 
      
 158 
     | 
    
         
            +
                                  Colour
         
     | 
| 
       176 
159 
     | 
    
         
             
                                    Esc
         
     | 
| 
       177 
160 
     | 
    
         
             
                                      Translator
         
     | 
| 
       178 
     | 
    
         
            -
             
     | 
| 
       179 
     | 
    
         
            -
             
     | 
| 
      
 161 
     | 
    
         
            +
                                StreamCollection
         
     | 
| 
      
 162 
     | 
    
         
            +
                                  Collection
         
     | 
| 
      
 163 
     | 
    
         
            +
                                  Stream
         
     | 
| 
      
 164 
     | 
    
         
            +
                                    Presentation
         
     | 
| 
      
 165 
     | 
    
         
            +
                                      Colour
         
     | 
| 
      
 166 
     | 
    
         
            +
                                        Esc
         
     | 
| 
      
 167 
     | 
    
         
            +
                                          Translator
         
     | 
| 
      
 168 
     | 
    
         
            +
                                    Style
         
     | 
| 
      
 169 
     | 
    
         
            +
                                      Esc
         
     | 
| 
      
 170 
     | 
    
         
            +
                                        Translator
         
     | 
| 
      
 171 
     | 
    
         
            +
                                Style
         
     | 
| 
       180 
172 
     | 
    
         
             
                                  Esc
         
     | 
| 
       181 
173 
     | 
    
         
             
                                    Translator
         
     | 
| 
       182 
     | 
    
         
            -
             
     | 
| 
       183 
     | 
    
         
            -
                               
     | 
| 
       184 
     | 
    
         
            -
                                ClearInterface
         
     | 
| 
       185 
     | 
    
         
            -
                              Style
         
     | 
| 
       186 
     | 
    
         
            -
                                Esc
         
     | 
| 
       187 
     | 
    
         
            -
                                  Translator
         
     | 
| 
       188 
     | 
    
         
            -
                              Terminal
         
     | 
| 
      
 174 
     | 
    
         
            +
                            Presentation
         
     | 
| 
      
 175 
     | 
    
         
            +
                              Colour
         
     | 
| 
       189 
176 
     | 
    
         
             
                                Esc
         
     | 
| 
       190 
177 
     | 
    
         
             
                                  Translator
         
     | 
| 
      
 178 
     | 
    
         
            +
                            Queue
         
     | 
| 
      
 179 
     | 
    
         
            +
                            RenderInterface
         
     | 
| 
      
 180 
     | 
    
         
            +
                              ClearInterface
         
     | 
| 
      
 181 
     | 
    
         
            +
                            Style
         
     | 
| 
      
 182 
     | 
    
         
            +
                              Esc
         
     | 
| 
      
 183 
     | 
    
         
            +
                                Translator
         
     | 
| 
      
 184 
     | 
    
         
            +
                            Terminal
         
     | 
| 
      
 185 
     | 
    
         
            +
                              Esc
         
     | 
| 
      
 186 
     | 
    
         
            +
                                Translator
         
     | 
| 
       191 
187 
     | 
    
         
             
                    HashParser
         
     | 
| 
       192 
188 
     | 
    
         
             
                      TextAdaptor
         
     | 
| 
       193 
189 
     | 
    
         
             
                    JSONParser
         
     | 
| 
         @@ -9,6 +9,14 @@ module Vedeu 
     | 
|
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
                attribute :interfaces, InterfaceCollection
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
      
 12 
     | 
    
         
            +
                def self.enqueue(attributes)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  new(attributes).enqueue
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                def enqueue
         
     | 
| 
      
 17 
     | 
    
         
            +
                  interfaces.map { |interface| interface.enqueue }
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       12 
20 
     | 
    
         
             
                def to_json
         
     | 
| 
       13 
21 
     | 
    
         
             
                  {
         
     | 
| 
       14 
22 
     | 
    
         
             
                    interfaces: interfaces
         
     | 
| 
         @@ -12,7 +12,7 @@ module Vedeu 
     | 
|
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
                def render
         
     | 
| 
       14 
14 
     | 
    
         
             
                  out = [ClearInterface.call(interface)]
         
     | 
| 
       15 
     | 
    
         
            -
                   
     | 
| 
      
 15 
     | 
    
         
            +
                  processed_lines.each_with_index do |line, index|
         
     | 
| 
       16 
16 
     | 
    
         
             
                    out << interface.origin(index)
         
     | 
| 
       17 
17 
     | 
    
         
             
                    out << line.to_s
         
     | 
| 
       18 
18 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -22,5 +22,38 @@ module Vedeu 
     | 
|
| 
       22 
22 
     | 
    
         
             
                private
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                attr_reader :interface
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                def processed_lines
         
     | 
| 
      
 27 
     | 
    
         
            +
                  lines.each do |line|
         
     | 
| 
      
 28 
     | 
    
         
            +
                    if line.streams.any?
         
     | 
| 
      
 29 
     | 
    
         
            +
                      processed_streams = []
         
     | 
| 
      
 30 
     | 
    
         
            +
                      line_length       = 0
         
     | 
| 
      
 31 
     | 
    
         
            +
                      line.streams.each do |stream|
         
     | 
| 
      
 32 
     | 
    
         
            +
                        next if stream.text.empty?
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                        if (line_length += stream.text.size) >= width
         
     | 
| 
      
 35 
     | 
    
         
            +
                          remainder = width - line_length
         
     | 
| 
      
 36 
     | 
    
         
            +
                          stream.text = truncate(stream.text, (remainder - 3))
         
     | 
| 
      
 37 
     | 
    
         
            +
                        end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                        processed_streams << stream
         
     | 
| 
      
 40 
     | 
    
         
            +
                      end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                      line.streams = processed_streams
         
     | 
| 
      
 43 
     | 
    
         
            +
                    end
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                def truncate(text, value)
         
     | 
| 
      
 48 
     | 
    
         
            +
                  text.chomp.slice(0...value)
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                def lines
         
     | 
| 
      
 52 
     | 
    
         
            +
                  interface.lines
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                def width
         
     | 
| 
      
 56 
     | 
    
         
            +
                  interface.width
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
       25 
58 
     | 
    
         
             
              end
         
     | 
| 
       26 
59 
     | 
    
         
             
            end
         
     | 
    
        data/lib/vedeu/parsing/parser.rb
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'vedeu/ 
     | 
| 
      
 1 
     | 
    
         
            +
            require 'vedeu/models/composition'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'vedeu/parsing/hash_parser'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'vedeu/parsing/json_parser'
         
     | 
| 
       4 
4 
     | 
    
         
             
            require 'vedeu/parsing/menu_parser'
         
     | 
| 
         @@ -18,7 +18,7 @@ module Vedeu 
     | 
|
| 
       18 
18 
     | 
    
         
             
                end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
                def parse
         
     | 
| 
       21 
     | 
    
         
            -
                   
     | 
| 
      
 21 
     | 
    
         
            +
                  Composition.enqueue(parsed_output)
         
     | 
| 
       22 
22 
     | 
    
         
             
                end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                private
         
     | 
| 
         @@ -4,6 +4,42 @@ require 'vedeu/support/persistence' 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            module Vedeu
         
     | 
| 
       6 
6 
     | 
    
         
             
              describe Composition do
         
     | 
| 
      
 7 
     | 
    
         
            +
                describe '.enqueue' do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  it 'enqueues the interfaces for rendering' do
         
     | 
| 
      
 9 
     | 
    
         
            +
                    attributes = {
         
     | 
| 
      
 10 
     | 
    
         
            +
                      interfaces: [
         
     | 
| 
      
 11 
     | 
    
         
            +
                        {
         
     | 
| 
      
 12 
     | 
    
         
            +
                          name: 'Composition.enqueue_1',
         
     | 
| 
      
 13 
     | 
    
         
            +
                          width: 35,
         
     | 
| 
      
 14 
     | 
    
         
            +
                          height: 5,
         
     | 
| 
      
 15 
     | 
    
         
            +
                          lines: {
         
     | 
| 
      
 16 
     | 
    
         
            +
                            streams: {
         
     | 
| 
      
 17 
     | 
    
         
            +
                              text: 'bd459118e6175689e4394e242debc2ae'
         
     | 
| 
      
 18 
     | 
    
         
            +
                            }
         
     | 
| 
      
 19 
     | 
    
         
            +
                          }
         
     | 
| 
      
 20 
     | 
    
         
            +
                        }, {
         
     | 
| 
      
 21 
     | 
    
         
            +
                          name: 'Composition.enqueue_2',
         
     | 
| 
      
 22 
     | 
    
         
            +
                          width: 35,
         
     | 
| 
      
 23 
     | 
    
         
            +
                          height: 5,
         
     | 
| 
      
 24 
     | 
    
         
            +
                          lines: {
         
     | 
| 
      
 25 
     | 
    
         
            +
                            streams: {
         
     | 
| 
      
 26 
     | 
    
         
            +
                              text: '837acb2cb2ea3ef359257851142a7830'
         
     | 
| 
      
 27 
     | 
    
         
            +
                            }
         
     | 
| 
      
 28 
     | 
    
         
            +
                          }
         
     | 
| 
      
 29 
     | 
    
         
            +
                        }
         
     | 
| 
      
 30 
     | 
    
         
            +
                      ]
         
     | 
| 
      
 31 
     | 
    
         
            +
                    }
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                    Composition.enqueue(attributes)
         
     | 
| 
      
 34 
     | 
    
         
            +
                    Persistence
         
     | 
| 
      
 35 
     | 
    
         
            +
                      .query('Composition.enqueue_1').dequeue
         
     | 
| 
      
 36 
     | 
    
         
            +
                      .must_match(/bd459118e6175689e4394e242debc2ae/)
         
     | 
| 
      
 37 
     | 
    
         
            +
                    Persistence
         
     | 
| 
      
 38 
     | 
    
         
            +
                      .query('Composition.enqueue_2').dequeue
         
     | 
| 
      
 39 
     | 
    
         
            +
                      .must_match(/837acb2cb2ea3ef359257851142a7830/)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
       7 
43 
     | 
    
         
             
                describe '#interfaces' do
         
     | 
| 
       8 
44 
     | 
    
         
             
                  it 'returns a collection of interfaces' do
         
     | 
| 
       9 
45 
     | 
    
         
             
                    Composition.new({
         
     | 
| 
         @@ -42,54 +78,54 @@ module Vedeu 
     | 
|
| 
       42 
78 
     | 
    
         | 
| 
       43 
79 
     | 
    
         
             
                describe '#to_s' do
         
     | 
| 
       44 
80 
     | 
    
         
             
                  it 'returns the stringified content for a single interface, single line, single stream' do
         
     | 
| 
       45 
     | 
    
         
            -
                    Persistence.create({ name: 'int1_lin1_str1', y: 3, x: 3, width:  
     | 
| 
      
 81 
     | 
    
         
            +
                    Persistence.create({ name: 'int1_lin1_str1', y: 3, x: 3, width: 15, height: 3 })
         
     | 
| 
       46 
82 
     | 
    
         
             
                    json = File.read('test/support/json/int1_lin1_str1.json')
         
     | 
| 
       47 
83 
     | 
    
         
             
                    attributes = JSON.load(json, nil, symbolize_names: true)
         
     | 
| 
       48 
84 
     | 
    
         | 
| 
       49 
85 
     | 
    
         
             
                    Composition.new(attributes).to_s.must_equal(
         
     | 
| 
       50 
     | 
    
         
            -
                      "\e[3;3H 
     | 
| 
       51 
     | 
    
         
            -
                      "\e[4;3H 
     | 
| 
       52 
     | 
    
         
            -
                      "\e[5;3H 
     | 
| 
      
 86 
     | 
    
         
            +
                      "\e[3;3H               \e[3;3H" \
         
     | 
| 
      
 87 
     | 
    
         
            +
                      "\e[4;3H               \e[4;3H" \
         
     | 
| 
      
 88 
     | 
    
         
            +
                      "\e[5;3H               \e[5;3H" \
         
     | 
| 
       53 
89 
     | 
    
         
             
                      "\e[3;3HSome text..."
         
     | 
| 
       54 
90 
     | 
    
         
             
                    )
         
     | 
| 
       55 
91 
     | 
    
         
             
                  end
         
     | 
| 
       56 
92 
     | 
    
         | 
| 
       57 
93 
     | 
    
         
             
                  it 'returns the stringified content for a single interface, single line, multiple streams' do
         
     | 
| 
       58 
     | 
    
         
            -
                    Persistence.create({ name: 'int1_lin1_str3', y: 3, x: 3, width:  
     | 
| 
      
 94 
     | 
    
         
            +
                    Persistence.create({ name: 'int1_lin1_str3', y: 3, x: 3, width: 30, height: 3 })
         
     | 
| 
       59 
95 
     | 
    
         
             
                    json = File.read('test/support/json/int1_lin1_str3.json')
         
     | 
| 
       60 
96 
     | 
    
         
             
                    attributes = JSON.load(json, nil, symbolize_names: true)
         
     | 
| 
       61 
97 
     | 
    
         | 
| 
       62 
98 
     | 
    
         
             
                    Composition.new(attributes).to_s.must_equal(
         
     | 
| 
       63 
     | 
    
         
            -
                      "\e[3;3H 
     | 
| 
       64 
     | 
    
         
            -
                      "\e[4;3H 
     | 
| 
       65 
     | 
    
         
            -
                      "\e[5;3H 
     | 
| 
      
 99 
     | 
    
         
            +
                      "\e[3;3H                              \e[3;3H" \
         
     | 
| 
      
 100 
     | 
    
         
            +
                      "\e[4;3H                              \e[4;3H" \
         
     | 
| 
      
 101 
     | 
    
         
            +
                      "\e[5;3H                              \e[5;3H" \
         
     | 
| 
       66 
102 
     | 
    
         
             
                      "\e[3;3HSome text... more text..."
         
     | 
| 
       67 
103 
     | 
    
         
             
                    )
         
     | 
| 
       68 
104 
     | 
    
         
             
                  end
         
     | 
| 
       69 
105 
     | 
    
         | 
| 
       70 
106 
     | 
    
         
             
                  it 'returns the stringified content for a single interface, multiple lines, single stream' do
         
     | 
| 
       71 
     | 
    
         
            -
                    Persistence.create({ name: 'int1_lin2_str1', y: 3, x: 3, width:  
     | 
| 
      
 107 
     | 
    
         
            +
                    Persistence.create({ name: 'int1_lin2_str1', y: 3, x: 3, width: 15, height: 3 })
         
     | 
| 
       72 
108 
     | 
    
         
             
                    json = File.read('test/support/json/int1_lin2_str1.json')
         
     | 
| 
       73 
109 
     | 
    
         
             
                    attributes = JSON.load(json, nil, symbolize_names: true)
         
     | 
| 
       74 
110 
     | 
    
         | 
| 
       75 
111 
     | 
    
         
             
                    Composition.new(attributes).to_s.must_equal(
         
     | 
| 
       76 
     | 
    
         
            -
                      "\e[3;3H 
     | 
| 
       77 
     | 
    
         
            -
                      "\e[4;3H 
     | 
| 
       78 
     | 
    
         
            -
                      "\e[5;3H 
     | 
| 
      
 112 
     | 
    
         
            +
                      "\e[3;3H               \e[3;3H" \
         
     | 
| 
      
 113 
     | 
    
         
            +
                      "\e[4;3H               \e[4;3H" \
         
     | 
| 
      
 114 
     | 
    
         
            +
                      "\e[5;3H               \e[5;3H" \
         
     | 
| 
       79 
115 
     | 
    
         
             
                      "\e[3;3HSome text..." \
         
     | 
| 
       80 
116 
     | 
    
         
             
                      "\e[4;3HSome text..."
         
     | 
| 
       81 
117 
     | 
    
         
             
                    )
         
     | 
| 
       82 
118 
     | 
    
         
             
                  end
         
     | 
| 
       83 
119 
     | 
    
         | 
| 
       84 
120 
     | 
    
         
             
                  it 'returns the stringified content for a single interface, multiple lines, multiple streams' do
         
     | 
| 
       85 
     | 
    
         
            -
                    Persistence.create({ name: 'int1_lin2_str3', y: 3, x: 3, width:  
     | 
| 
      
 121 
     | 
    
         
            +
                    Persistence.create({ name: 'int1_lin2_str3', y: 3, x: 3, width: 30, height: 3 })
         
     | 
| 
       86 
122 
     | 
    
         
             
                    json = File.read('test/support/json/int1_lin2_str3.json')
         
     | 
| 
       87 
123 
     | 
    
         
             
                    attributes = JSON.load(json, nil, symbolize_names: true)
         
     | 
| 
       88 
124 
     | 
    
         | 
| 
       89 
125 
     | 
    
         
             
                    Composition.new(attributes).to_s.must_equal(
         
     | 
| 
       90 
     | 
    
         
            -
                      "\e[3;3H 
     | 
| 
       91 
     | 
    
         
            -
                      "\e[4;3H 
     | 
| 
       92 
     | 
    
         
            -
                      "\e[5;3H 
     | 
| 
      
 126 
     | 
    
         
            +
                      "\e[3;3H                              \e[3;3H" \
         
     | 
| 
      
 127 
     | 
    
         
            +
                      "\e[4;3H                              \e[4;3H" \
         
     | 
| 
      
 128 
     | 
    
         
            +
                      "\e[5;3H                              \e[5;3H" \
         
     | 
| 
       93 
129 
     | 
    
         
             
                      "\e[3;3HSome text... more text..." \
         
     | 
| 
       94 
130 
     | 
    
         
             
                      "\e[4;3HSome text... more text..."
         
     | 
| 
       95 
131 
     | 
    
         
             
                    )
         
     | 
| 
         @@ -98,109 +134,100 @@ module Vedeu 
     | 
|
| 
       98 
134 
     | 
    
         
             
                  it 'returns the stringified content for a single interface, multiple lines, multiple streams, streams contain styles' do
         
     | 
| 
       99 
135 
     | 
    
         
             
                    json = File.read('test/support/json/int1_lin2_str3_styles.json')
         
     | 
| 
       100 
136 
     | 
    
         
             
                    attributes = JSON.load(json, nil, symbolize_names: true)
         
     | 
| 
       101 
     | 
    
         
            -
                    Persistence.create({ name: 'int1_lin2_str3_styles', y: 3, x: 3, width:  
     | 
| 
      
 137 
     | 
    
         
            +
                    Persistence.create({ name: 'int1_lin2_str3_styles', y: 3, x: 3, width: 30, height: 3 })
         
     | 
| 
       102 
138 
     | 
    
         | 
| 
       103 
139 
     | 
    
         
             
                    Composition.new(attributes).to_s.must_equal(
         
     | 
| 
       104 
     | 
    
         
            -
                      "\e[3;3H 
     | 
| 
       105 
     | 
    
         
            -
                      "\e[4;3H 
     | 
| 
       106 
     | 
    
         
            -
                      "\e[5;3H 
     | 
| 
       107 
     | 
    
         
            -
                      "\e[3;3H\e[38;5;16m\e[48;5; 
     | 
| 
      
 140 
     | 
    
         
            +
                      "\e[3;3H                              \e[3;3H" \
         
     | 
| 
      
 141 
     | 
    
         
            +
                      "\e[4;3H                              \e[4;3H" \
         
     | 
| 
      
 142 
     | 
    
         
            +
                      "\e[5;3H                              \e[5;3H" \
         
     | 
| 
      
 143 
     | 
    
         
            +
                      "\e[3;3H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text..."
         
     | 
| 
       108 
144 
     | 
    
         
             
                    )
         
     | 
| 
       109 
145 
     | 
    
         
             
                  end
         
     | 
| 
       110 
146 
     | 
    
         | 
| 
       111 
147 
     | 
    
         
             
                  it 'returns the stringified content for multiple interfaces, single line, single stream' do
         
     | 
| 
       112 
     | 
    
         
            -
                    Persistence.create({ name: 'int2_lin1_str1_1', y: 3, x: 3, width:  
     | 
| 
       113 
     | 
    
         
            -
                    Persistence.create({ name: 'int2_lin1_str1_2', y: 6, x: 6, width:  
     | 
| 
      
 148 
     | 
    
         
            +
                    Persistence.create({ name: 'int2_lin1_str1_1', y: 3, x: 3, width: 15, height: 3 })
         
     | 
| 
      
 149 
     | 
    
         
            +
                    Persistence.create({ name: 'int2_lin1_str1_2', y: 6, x: 6, width: 15, height: 3 })
         
     | 
| 
       114 
150 
     | 
    
         
             
                    json = File.read('test/support/json/int2_lin1_str1.json')
         
     | 
| 
       115 
151 
     | 
    
         
             
                    attributes = JSON.load(json, nil, symbolize_names: true)
         
     | 
| 
       116 
152 
     | 
    
         | 
| 
       117 
153 
     | 
    
         
             
                    Composition.new(attributes).to_s.must_equal(
         
     | 
| 
       118 
     | 
    
         
            -
                      "\e[3;3H 
     | 
| 
       119 
     | 
    
         
            -
                      "\e[4;3H 
     | 
| 
       120 
     | 
    
         
            -
                      "\e[5;3H 
     | 
| 
      
 154 
     | 
    
         
            +
                      "\e[3;3H               \e[3;3H" \
         
     | 
| 
      
 155 
     | 
    
         
            +
                      "\e[4;3H               \e[4;3H" \
         
     | 
| 
      
 156 
     | 
    
         
            +
                      "\e[5;3H               \e[5;3H" \
         
     | 
| 
       121 
157 
     | 
    
         
             
                      "\e[3;3HSome text..." \
         
     | 
| 
       122 
     | 
    
         
            -
                      "\e[6;6H 
     | 
| 
       123 
     | 
    
         
            -
                      "\e[7;6H 
     | 
| 
       124 
     | 
    
         
            -
                      "\e[8;6H 
     | 
| 
      
 158 
     | 
    
         
            +
                      "\e[6;6H               \e[6;6H" \
         
     | 
| 
      
 159 
     | 
    
         
            +
                      "\e[7;6H               \e[7;6H" \
         
     | 
| 
      
 160 
     | 
    
         
            +
                      "\e[8;6H               \e[8;6H" \
         
     | 
| 
       125 
161 
     | 
    
         
             
                      "\e[6;6HSome text..."
         
     | 
| 
       126 
162 
     | 
    
         
             
                    )
         
     | 
| 
       127 
163 
     | 
    
         
             
                  end
         
     | 
| 
       128 
164 
     | 
    
         | 
| 
       129 
165 
     | 
    
         
             
                  it 'returns the stringified content for multiple interfaces, single line, multiple streams' do
         
     | 
| 
       130 
     | 
    
         
            -
                    Persistence.create({ name: 'int2_lin1_str3_1', y: 3, x: 3, width:  
     | 
| 
       131 
     | 
    
         
            -
                    Persistence.create({ name: 'int2_lin1_str3_2', y: 6, x: 6, width:  
     | 
| 
      
 166 
     | 
    
         
            +
                    Persistence.create({ name: 'int2_lin1_str3_1', y: 3, x: 3, width: 30, height: 3 })
         
     | 
| 
      
 167 
     | 
    
         
            +
                    Persistence.create({ name: 'int2_lin1_str3_2', y: 6, x: 6, width: 30, height: 3 })
         
     | 
| 
       132 
168 
     | 
    
         
             
                    json = File.read('test/support/json/int2_lin1_str3.json')
         
     | 
| 
       133 
169 
     | 
    
         
             
                    attributes = JSON.load(json, nil, symbolize_names: true)
         
     | 
| 
       134 
170 
     | 
    
         | 
| 
       135 
171 
     | 
    
         
             
                    Composition.new(attributes).to_s.must_equal(
         
     | 
| 
       136 
     | 
    
         
            -
                      "\e[3;3H 
     | 
| 
       137 
     | 
    
         
            -
                      "\e[4;3H 
     | 
| 
       138 
     | 
    
         
            -
                      "\e[5;3H 
     | 
| 
       139 
     | 
    
         
            -
                      "\e[3;3HSome text... more text..." 
     | 
| 
       140 
     | 
    
         
            -
                      "\e[6;6H 
     | 
| 
       141 
     | 
    
         
            -
                      "\e[7;6H 
     | 
| 
       142 
     | 
    
         
            -
                      "\e[8;6H 
     | 
| 
      
 172 
     | 
    
         
            +
                      "\e[3;3H                              \e[3;3H" \
         
     | 
| 
      
 173 
     | 
    
         
            +
                      "\e[4;3H                              \e[4;3H" \
         
     | 
| 
      
 174 
     | 
    
         
            +
                      "\e[5;3H                              \e[5;3H" \
         
     | 
| 
      
 175 
     | 
    
         
            +
                      "\e[3;3HSome text... more text..."             \
         
     | 
| 
      
 176 
     | 
    
         
            +
                      "\e[6;6H                              \e[6;6H" \
         
     | 
| 
      
 177 
     | 
    
         
            +
                      "\e[7;6H                              \e[7;6H" \
         
     | 
| 
      
 178 
     | 
    
         
            +
                      "\e[8;6H                              \e[8;6H" \
         
     | 
| 
       143 
179 
     | 
    
         
             
                      "\e[6;6HSome text... more text..."
         
     | 
| 
       144 
180 
     | 
    
         
             
                    )
         
     | 
| 
       145 
181 
     | 
    
         
             
                  end
         
     | 
| 
       146 
182 
     | 
    
         | 
| 
       147 
183 
     | 
    
         
             
                  it 'returns the stringified content for multiple interfaces, multiple lines, single stream' do
         
     | 
| 
       148 
     | 
    
         
            -
                    Persistence.create({ name: 'int2_lin2_str1_1', y: 3, x: 3, width:  
     | 
| 
       149 
     | 
    
         
            -
                    Persistence.create({ name: 'int2_lin2_str1_2', y: 6, x: 6, width:  
     | 
| 
      
 184 
     | 
    
         
            +
                    Persistence.create({ name: 'int2_lin2_str1_1', y: 3, x: 3, width: 15, height: 3 })
         
     | 
| 
      
 185 
     | 
    
         
            +
                    Persistence.create({ name: 'int2_lin2_str1_2', y: 6, x: 6, width: 15, height: 3 })
         
     | 
| 
       150 
186 
     | 
    
         
             
                    json = File.read('test/support/json/int2_lin2_str1.json')
         
     | 
| 
       151 
187 
     | 
    
         
             
                    attributes = JSON.load(json, nil, symbolize_names: true)
         
     | 
| 
       152 
188 
     | 
    
         | 
| 
       153 
189 
     | 
    
         
             
                    Composition.new(attributes).to_s.must_equal(
         
     | 
| 
       154 
     | 
    
         
            -
                      "\e[3;3H 
     | 
| 
       155 
     | 
    
         
            -
                      "\e[4;3H 
     | 
| 
       156 
     | 
    
         
            -
                      "\e[5;3H 
     | 
| 
      
 190 
     | 
    
         
            +
                      "\e[3;3H               \e[3;3H" \
         
     | 
| 
      
 191 
     | 
    
         
            +
                      "\e[4;3H               \e[4;3H" \
         
     | 
| 
      
 192 
     | 
    
         
            +
                      "\e[5;3H               \e[5;3H" \
         
     | 
| 
       157 
193 
     | 
    
         
             
                      "\e[3;3HSome text..." \
         
     | 
| 
       158 
194 
     | 
    
         
             
                      "\e[4;3HSome text..." \
         
     | 
| 
       159 
     | 
    
         
            -
                      "\e[3;3H 
     | 
| 
       160 
     | 
    
         
            -
                      "\e[4;3H 
     | 
| 
       161 
     | 
    
         
            -
                      "\e[5;3H 
     | 
| 
      
 195 
     | 
    
         
            +
                      "\e[3;3H               \e[3;3H" \
         
     | 
| 
      
 196 
     | 
    
         
            +
                      "\e[4;3H               \e[4;3H" \
         
     | 
| 
      
 197 
     | 
    
         
            +
                      "\e[5;3H               \e[5;3H" \
         
     | 
| 
       162 
198 
     | 
    
         
             
                      "\e[3;3HSome text..." \
         
     | 
| 
       163 
199 
     | 
    
         
             
                      "\e[4;3HSome text..."
         
     | 
| 
       164 
200 
     | 
    
         
             
                    )
         
     | 
| 
       165 
201 
     | 
    
         
             
                  end
         
     | 
| 
       166 
202 
     | 
    
         | 
| 
       167 
203 
     | 
    
         
             
                  it 'returns the stringified content for multiple interfaces, multiple lines, multiple streams' do
         
     | 
| 
       168 
     | 
    
         
            -
                    Persistence.create({ name: 'int2_lin2_str3_1', y: 3, x: 3, width:  
     | 
| 
       169 
     | 
    
         
            -
                    Persistence.create({ name: 'int2_lin2_str3_2', y: 6, x: 6, width:  
     | 
| 
      
 204 
     | 
    
         
            +
                    Persistence.create({ name: 'int2_lin2_str3_1', y: 3, x: 3, width: 30, height: 3 })
         
     | 
| 
      
 205 
     | 
    
         
            +
                    Persistence.create({ name: 'int2_lin2_str3_2', y: 6, x: 6, width: 30, height: 3 })
         
     | 
| 
       170 
206 
     | 
    
         
             
                    json = File.read('test/support/json/int2_lin2_str3.json')
         
     | 
| 
       171 
207 
     | 
    
         
             
                    attributes = JSON.load(json, nil, symbolize_names: true)
         
     | 
| 
       172 
208 
     | 
    
         | 
| 
       173 
209 
     | 
    
         
             
                    Composition.new(attributes).to_s.must_equal(
         
     | 
| 
       174 
     | 
    
         
            -
                      "\e[3;3H 
     | 
| 
       175 
     | 
    
         
            -
                      "\e[4;3H 
     | 
| 
       176 
     | 
    
         
            -
                      "\e[5;3H 
     | 
| 
       177 
     | 
    
         
            -
                      "\e[3;3HSome text... more text..." 
     | 
| 
       178 
     | 
    
         
            -
                      "\e[4;3HSome text... more text..." 
     | 
| 
       179 
     | 
    
         
            -
                      "\e[6;6H 
     | 
| 
       180 
     | 
    
         
            -
                      "\e[7;6H 
     | 
| 
       181 
     | 
    
         
            -
                      "\e[8;6H 
     | 
| 
       182 
     | 
    
         
            -
                      "\e[6;6HSome text... more text..." 
     | 
| 
      
 210 
     | 
    
         
            +
                      "\e[3;3H                              \e[3;3H" \
         
     | 
| 
      
 211 
     | 
    
         
            +
                      "\e[4;3H                              \e[4;3H" \
         
     | 
| 
      
 212 
     | 
    
         
            +
                      "\e[5;3H                              \e[5;3H" \
         
     | 
| 
      
 213 
     | 
    
         
            +
                      "\e[3;3HSome text... more text..."             \
         
     | 
| 
      
 214 
     | 
    
         
            +
                      "\e[4;3HSome text... more text..."             \
         
     | 
| 
      
 215 
     | 
    
         
            +
                      "\e[6;6H                              \e[6;6H" \
         
     | 
| 
      
 216 
     | 
    
         
            +
                      "\e[7;6H                              \e[7;6H" \
         
     | 
| 
      
 217 
     | 
    
         
            +
                      "\e[8;6H                              \e[8;6H" \
         
     | 
| 
      
 218 
     | 
    
         
            +
                      "\e[6;6HSome text... more text..."             \
         
     | 
| 
       183 
219 
     | 
    
         
             
                      "\e[7;6HSome text... more text..."
         
     | 
| 
       184 
220 
     | 
    
         
             
                    )
         
     | 
| 
       185 
221 
     | 
    
         
             
                  end
         
     | 
| 
       186 
222 
     | 
    
         | 
| 
       187 
223 
     | 
    
         
             
                  it 'returns the stringified content for multiple interfaces, multiple lines, multiple streams, streams contain styles' do
         
     | 
| 
       188 
     | 
    
         
            -
                    Persistence.create({ name: 'int2_lin2_str3_styles_1', y: 3, x: 3, width:  
     | 
| 
       189 
     | 
    
         
            -
                    Persistence.create({ name: 'int2_lin2_str3_styles_2', y: 6, x: 6, width:  
     | 
| 
      
 224 
     | 
    
         
            +
                    Persistence.create({ name: 'int2_lin2_str3_styles_1', y: 3, x: 3, width: 30, height: 3 })
         
     | 
| 
      
 225 
     | 
    
         
            +
                    Persistence.create({ name: 'int2_lin2_str3_styles_2', y: 6, x: 6, width: 30, height: 3 })
         
     | 
| 
       190 
226 
     | 
    
         
             
                    json = File.read('test/support/json/int2_lin2_str3_styles.json')
         
     | 
| 
       191 
227 
     | 
    
         
             
                    attributes = JSON.load(json, nil, symbolize_names: true)
         
     | 
| 
       192 
228 
     | 
    
         | 
| 
       193 
229 
     | 
    
         
             
                    Composition.new(attributes).to_s.must_equal(
         
     | 
| 
       194 
     | 
    
         
            -
                      "\e[3;3H 
     | 
| 
       195 
     | 
    
         
            -
                      "\e[4;3H          \e[4;3H" \
         
     | 
| 
       196 
     | 
    
         
            -
                      "\e[5;3H          \e[5;3H" \
         
     | 
| 
       197 
     | 
    
         
            -
                      "\e[3;3H\e[38;5;16m\e[48;5;21m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;5;226m\e[48;5;46m\e[24m\e[21m\e[27m \e[38;5;231m\e[48;5;201m\e[1mmore text..." \
         
     | 
| 
       198 
     | 
    
         
            -
                      "\e[4;3H\e[38;5;16m\e[48;5;21m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;5;226m\e[48;5;46m\e[24m\e[21m\e[27m \e[38;5;231m\e[48;5;201m\e[1mmore text..." \
         
     | 
| 
       199 
     | 
    
         
            -
                      "\e[6;6H          \e[6;6H" \
         
     | 
| 
       200 
     | 
    
         
            -
                      "\e[7;6H          \e[7;6H" \
         
     | 
| 
       201 
     | 
    
         
            -
                      "\e[8;6H          \e[8;6H" \
         
     | 
| 
       202 
     | 
    
         
            -
                      "\e[6;6H\e[38;5;16m\e[48;5;21m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;5;226m\e[48;5;46m\e[24m\e[21m\e[27m \e[38;5;231m\e[48;5;201m\e[1mmore text..." \
         
     | 
| 
       203 
     | 
    
         
            -
                      "\e[7;6H\e[38;5;16m\e[48;5;21m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;5;226m\e[48;5;46m\e[24m\e[21m\e[27m \e[38;5;231m\e[48;5;201m\e[1mmore text..."
         
     | 
| 
      
 230 
     | 
    
         
            +
                      "\e[3;3H                              \e[3;3H\e[4;3H                              \e[4;3H\e[5;3H                              \e[5;3H\e[3;3H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text...\e[4;3H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text...\e[6;6H                              \e[6;6H\e[7;6H                              \e[7;6H\e[8;6H                              \e[8;6H\e[6;6H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text...\e[7;6H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text..."
         
     | 
| 
       204 
231 
     | 
    
         
             
                    )
         
     | 
| 
       205 
232 
     | 
    
         
             
                  end
         
     | 
| 
       206 
233 
     | 
    
         
             
                end
         
     | 
| 
         @@ -68,14 +68,14 @@ module Vedeu 
     | 
|
| 
       68 
68 
     | 
    
         
             
                    Queue.reset
         
     | 
| 
       69 
69 
     | 
    
         
             
                    interface = Interface.new({
         
     | 
| 
       70 
70 
     | 
    
         
             
                      name:   'Interface#enqueue',
         
     | 
| 
       71 
     | 
    
         
            -
                      width:   
     | 
| 
      
 71 
     | 
    
         
            +
                      width:  8,
         
     | 
| 
       72 
72 
     | 
    
         
             
                      height: 2,
         
     | 
| 
       73 
73 
     | 
    
         
             
                      lines:  [ { streams: { text: 'a8f39' } } ]
         
     | 
| 
       74 
74 
     | 
    
         
             
                    })
         
     | 
| 
       75 
75 
     | 
    
         
             
                    interface.enqueue
         
     | 
| 
       76 
76 
     | 
    
         
             
                    interface.dequeue.must_equal(
         
     | 
| 
       77 
     | 
    
         
            -
                      "\e[1;1H 
     | 
| 
       78 
     | 
    
         
            -
                      "\e[2;1H 
     | 
| 
      
 77 
     | 
    
         
            +
                      "\e[1;1H        \e[1;1H" \
         
     | 
| 
      
 78 
     | 
    
         
            +
                      "\e[2;1H        \e[2;1H" \
         
     | 
| 
       79 
79 
     | 
    
         
             
                      "\e[1;1Ha8f39"
         
     | 
| 
       80 
80 
     | 
    
         
             
                    )
         
     | 
| 
       81 
81 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -140,7 +140,7 @@ module Vedeu 
     | 
|
| 
       140 
140 
     | 
    
         
             
                        foreground: '#ff0000',
         
     | 
| 
       141 
141 
     | 
    
         
             
                        background: '#000000'
         
     | 
| 
       142 
142 
     | 
    
         
             
                      },
         
     | 
| 
       143 
     | 
    
         
            -
                      width:   
     | 
| 
      
 143 
     | 
    
         
            +
                      width:  11,
         
     | 
| 
       144 
144 
     | 
    
         
             
                      height: 3
         
     | 
| 
       145 
145 
     | 
    
         
             
                    }
         
     | 
| 
       146 
146 
     | 
    
         
             
                    interface = Interface.new(attributes)
         
     | 
| 
         @@ -149,9 +149,9 @@ module Vedeu 
     | 
|
| 
       149 
149 
     | 
    
         
             
                    Terminal.stub(:output, nil) do
         
     | 
| 
       150 
150 
     | 
    
         
             
                      interface.refresh.must_equal(
         
     | 
| 
       151 
151 
     | 
    
         
             
                        "\e[38;5;196m\e[48;5;16m" \
         
     | 
| 
       152 
     | 
    
         
            -
                        "\e[1;1H 
     | 
| 
       153 
     | 
    
         
            -
                        "\e[2;1H 
     | 
| 
       154 
     | 
    
         
            -
                        "\e[3;1H 
     | 
| 
      
 152 
     | 
    
         
            +
                        "\e[1;1H           \e[1;1H" \
         
     | 
| 
      
 153 
     | 
    
         
            +
                        "\e[2;1H           \e[2;1H" \
         
     | 
| 
      
 154 
     | 
    
         
            +
                        "\e[3;1H           \e[3;1H" \
         
     | 
| 
       155 
155 
     | 
    
         
             
                        "\e[1;1H#refresh" \
         
     | 
| 
       156 
156 
     | 
    
         
             
                        "\e[2;1H#refresh" \
         
     | 
| 
       157 
157 
     | 
    
         
             
                        "\e[3;1H#refresh"
         
     | 
| 
         @@ -167,14 +167,14 @@ module Vedeu 
     | 
|
| 
       167 
167 
     | 
    
         
             
                        foreground: '#ff0000',
         
     | 
| 
       168 
168 
     | 
    
         
             
                        background: '#000000'
         
     | 
| 
       169 
169 
     | 
    
         
             
                      },
         
     | 
| 
       170 
     | 
    
         
            -
                      width:   
     | 
| 
      
 170 
     | 
    
         
            +
                      width:  11,
         
     | 
| 
       171 
171 
     | 
    
         
             
                      height: 3
         
     | 
| 
       172 
172 
     | 
    
         
             
                    }
         
     | 
| 
       173 
173 
     | 
    
         
             
                    interface = Interface.new(attributes)
         
     | 
| 
       174 
174 
     | 
    
         
             
                    interface.current = "\e[38;5;196m\e[48;5;16m" \
         
     | 
| 
       175 
     | 
    
         
            -
                                        "\e[1;1H 
     | 
| 
       176 
     | 
    
         
            -
                                        "\e[2;1H 
     | 
| 
       177 
     | 
    
         
            -
                                        "\e[3;1H 
     | 
| 
      
 175 
     | 
    
         
            +
                                        "\e[1;1H           \e[1;1H" \
         
     | 
| 
      
 176 
     | 
    
         
            +
                                        "\e[2;1H           \e[2;1H" \
         
     | 
| 
      
 177 
     | 
    
         
            +
                                        "\e[3;1H           \e[3;1H" \
         
     | 
| 
       178 
178 
     | 
    
         
             
                                        "\e[1;1H#refresh" \
         
     | 
| 
       179 
179 
     | 
    
         
             
                                        "\e[2;1H#refresh" \
         
     | 
| 
       180 
180 
     | 
    
         
             
                                        "\e[3;1H#refresh"
         
     | 
| 
         @@ -182,9 +182,9 @@ module Vedeu 
     | 
|
| 
       182 
182 
     | 
    
         
             
                    Terminal.stub(:output, nil) do
         
     | 
| 
       183 
183 
     | 
    
         
             
                      interface.refresh.must_equal(
         
     | 
| 
       184 
184 
     | 
    
         
             
                        "\e[38;5;196m\e[48;5;16m" \
         
     | 
| 
       185 
     | 
    
         
            -
                        "\e[1;1H 
     | 
| 
       186 
     | 
    
         
            -
                        "\e[2;1H 
     | 
| 
       187 
     | 
    
         
            -
                        "\e[3;1H 
     | 
| 
      
 185 
     | 
    
         
            +
                        "\e[1;1H           \e[1;1H" \
         
     | 
| 
      
 186 
     | 
    
         
            +
                        "\e[2;1H           \e[2;1H" \
         
     | 
| 
      
 187 
     | 
    
         
            +
                        "\e[3;1H           \e[3;1H" \
         
     | 
| 
       188 
188 
     | 
    
         
             
                        "\e[1;1H#refresh" \
         
     | 
| 
       189 
189 
     | 
    
         
             
                        "\e[2;1H#refresh" \
         
     | 
| 
       190 
190 
     | 
    
         
             
                        "\e[3;1H#refresh"
         
     | 
| 
         @@ -28,13 +28,13 @@ module Vedeu 
     | 
|
| 
       28 
28 
     | 
    
         
             
                end
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
                describe '#to_json' do
         
     | 
| 
       31 
     | 
    
         
            -
                  it 'returns  
     | 
| 
      
 31 
     | 
    
         
            +
                  it 'returns a String' do
         
     | 
| 
       32 
32 
     | 
    
         
             
                    line.to_json.must_equal("{\"colour\":{\"foreground\":\"#ff0000\",\"background\":\"#000000\"},\"style\":[\"normal\"],\"streams\":[]}")
         
     | 
| 
       33 
33 
     | 
    
         
             
                  end
         
     | 
| 
       34 
34 
     | 
    
         
             
                end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                describe '#to_s' do
         
     | 
| 
       37 
     | 
    
         
            -
                  it 'returns  
     | 
| 
      
 37 
     | 
    
         
            +
                  it 'returns a String' do
         
     | 
| 
       38 
38 
     | 
    
         
             
                    line.to_s.must_equal(
         
     | 
| 
       39 
39 
     | 
    
         
             
                      "\e[38;5;196m\e[48;5;16m" \
         
     | 
| 
       40 
40 
     | 
    
         
             
                      "\e[24m\e[21m\e[27m"
         
     | 
| 
         @@ -12,18 +12,29 @@ module Vedeu 
     | 
|
| 
       12 
12 
     | 
    
         
             
                    interface = Interface.new({
         
     | 
| 
       13 
13 
     | 
    
         
             
                      name:   '.call',
         
     | 
| 
       14 
14 
     | 
    
         
             
                      width:  32,
         
     | 
| 
       15 
     | 
    
         
            -
                      height:  
     | 
| 
      
 15 
     | 
    
         
            +
                      height: 3,
         
     | 
| 
       16 
16 
     | 
    
         
             
                      lines:  'RenderInterface.call',
         
     | 
| 
       17 
17 
     | 
    
         
             
                      lines:  [
         
     | 
| 
       18 
     | 
    
         
            -
                        { 
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 18 
     | 
    
         
            +
                        {
         
     | 
| 
      
 19 
     | 
    
         
            +
                          streams: [{ text: 'this is the first' }]
         
     | 
| 
      
 20 
     | 
    
         
            +
                        }, {
         
     | 
| 
      
 21 
     | 
    
         
            +
                          streams: { text: 'this is the second and it is long' }
         
     | 
| 
      
 22 
     | 
    
         
            +
                        }, {
         
     | 
| 
      
 23 
     | 
    
         
            +
                          streams: [
         
     | 
| 
      
 24 
     | 
    
         
            +
                            { text: 'this is the third, ' },
         
     | 
| 
      
 25 
     | 
    
         
            +
                            { text: 'it is even longer '  },
         
     | 
| 
      
 26 
     | 
    
         
            +
                            { text: 'and still truncated' }
         
     | 
| 
      
 27 
     | 
    
         
            +
                          ]
         
     | 
| 
      
 28 
     | 
    
         
            +
                        }
         
     | 
| 
       20 
29 
     | 
    
         
             
                      ]
         
     | 
| 
       21 
30 
     | 
    
         
             
                    })
         
     | 
| 
       22 
31 
     | 
    
         
             
                    RenderInterface.call(interface).must_equal(
         
     | 
| 
       23 
32 
     | 
    
         
             
                      "\e[1;1H                                \e[1;1H" \
         
     | 
| 
       24 
33 
     | 
    
         
             
                      "\e[2;1H                                \e[2;1H" \
         
     | 
| 
       25 
     | 
    
         
            -
                      "\e[ 
     | 
| 
       26 
     | 
    
         
            -
                      "\e[ 
     | 
| 
      
 34 
     | 
    
         
            +
                      "\e[3;1H                                \e[3;1H" \
         
     | 
| 
      
 35 
     | 
    
         
            +
                      "\e[1;1Hthis is the first" \
         
     | 
| 
      
 36 
     | 
    
         
            +
                      "\e[2;1Hthis is the second and it is " \
         
     | 
| 
      
 37 
     | 
    
         
            +
                      "\e[3;1Hthis is the third, it is even"
         
     | 
| 
       27 
38 
     | 
    
         
             
                    )
         
     | 
| 
       28 
39 
     | 
    
         
             
                  end
         
     | 
| 
       29 
40 
     | 
    
         
             
                end
         
     | 
    
        data/vedeu.gemspec
    CHANGED
    
    | 
         @@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            Gem::Specification.new do |spec|
         
     | 
| 
       6 
6 
     | 
    
         
             
              spec.name          = 'vedeu'
         
     | 
| 
       7 
     | 
    
         
            -
              spec.version       = '0.0. 
     | 
| 
      
 7 
     | 
    
         
            +
              spec.version       = '0.0.42'
         
     | 
| 
       8 
8 
     | 
    
         
             
              spec.authors       = ['Gavin Laking']
         
     | 
| 
       9 
9 
     | 
    
         
             
              spec.email         = ['gavinlaking@gmail.com']
         
     | 
| 
       10 
10 
     | 
    
         
             
              spec.summary       = %q{A terminal case of wonderland.}
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: vedeu
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.42
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Gavin Laking
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2014-07- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2014-07-27 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -189,7 +189,6 @@ files: 
     | 
|
| 
       189 
189 
     | 
    
         
             
            - lib/vedeu/output/clear_interface.rb
         
     | 
| 
       190 
190 
     | 
    
         
             
            - lib/vedeu/output/render_interface.rb
         
     | 
| 
       191 
191 
     | 
    
         
             
            - lib/vedeu/output/template.rb
         
     | 
| 
       192 
     | 
    
         
            -
            - lib/vedeu/parsing/compositor.rb
         
     | 
| 
       193 
192 
     | 
    
         
             
            - lib/vedeu/parsing/hash_parser.rb
         
     | 
| 
       194 
193 
     | 
    
         
             
            - lib/vedeu/parsing/json_parser.rb
         
     | 
| 
       195 
194 
     | 
    
         
             
            - lib/vedeu/parsing/menu_parser.rb
         
     | 
| 
         @@ -226,7 +225,6 @@ files: 
     | 
|
| 
       226 
225 
     | 
    
         
             
            - test/lib/vedeu/output/clear_interface_test.rb
         
     | 
| 
       227 
226 
     | 
    
         
             
            - test/lib/vedeu/output/render_interface_test.rb
         
     | 
| 
       228 
227 
     | 
    
         
             
            - test/lib/vedeu/output/template.rb
         
     | 
| 
       229 
     | 
    
         
            -
            - test/lib/vedeu/parsing/compositor_test.rb
         
     | 
| 
       230 
228 
     | 
    
         
             
            - test/lib/vedeu/parsing/hash_parser_test.rb
         
     | 
| 
       231 
229 
     | 
    
         
             
            - test/lib/vedeu/parsing/json_parser_test.rb
         
     | 
| 
       232 
230 
     | 
    
         
             
            - test/lib/vedeu/parsing/parser_test.rb
         
     | 
| 
         @@ -304,7 +302,6 @@ test_files: 
     | 
|
| 
       304 
302 
     | 
    
         
             
            - test/lib/vedeu/output/clear_interface_test.rb
         
     | 
| 
       305 
303 
     | 
    
         
             
            - test/lib/vedeu/output/render_interface_test.rb
         
     | 
| 
       306 
304 
     | 
    
         
             
            - test/lib/vedeu/output/template.rb
         
     | 
| 
       307 
     | 
    
         
            -
            - test/lib/vedeu/parsing/compositor_test.rb
         
     | 
| 
       308 
305 
     | 
    
         
             
            - test/lib/vedeu/parsing/hash_parser_test.rb
         
     | 
| 
       309 
306 
     | 
    
         
             
            - test/lib/vedeu/parsing/json_parser_test.rb
         
     | 
| 
       310 
307 
     | 
    
         
             
            - test/lib/vedeu/parsing/parser_test.rb
         
     | 
| 
         @@ -1,25 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'vedeu/models/composition'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module Vedeu
         
     | 
| 
       4 
     | 
    
         
            -
              class Compositor
         
     | 
| 
       5 
     | 
    
         
            -
                def self.enqueue(attributes)
         
     | 
| 
       6 
     | 
    
         
            -
                  new(attributes).enqueue
         
     | 
| 
       7 
     | 
    
         
            -
                end
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                def initialize(attributes)
         
     | 
| 
       10 
     | 
    
         
            -
                  @attributes = attributes
         
     | 
| 
       11 
     | 
    
         
            -
                end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                def enqueue
         
     | 
| 
       14 
     | 
    
         
            -
                  composition.interfaces.map { |interface| interface.enqueue }
         
     | 
| 
       15 
     | 
    
         
            -
                end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                private
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                attr_reader :attributes
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                def composition
         
     | 
| 
       22 
     | 
    
         
            -
                  @composition ||= Composition.new(attributes)
         
     | 
| 
       23 
     | 
    
         
            -
                end
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,42 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'test_helper'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'vedeu/parsing/compositor'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            module Vedeu
         
     | 
| 
       5 
     | 
    
         
            -
              describe Compositor do
         
     | 
| 
       6 
     | 
    
         
            -
                describe '.enqueue' do
         
     | 
| 
       7 
     | 
    
         
            -
                  it 'enqueues the interfaces for rendering' do
         
     | 
| 
       8 
     | 
    
         
            -
                    attributes = {
         
     | 
| 
       9 
     | 
    
         
            -
                      interfaces: [
         
     | 
| 
       10 
     | 
    
         
            -
                        {
         
     | 
| 
       11 
     | 
    
         
            -
                          name: 'Compositor.enqueue_1',
         
     | 
| 
       12 
     | 
    
         
            -
                          width: 5,
         
     | 
| 
       13 
     | 
    
         
            -
                          height: 5,
         
     | 
| 
       14 
     | 
    
         
            -
                          lines: {
         
     | 
| 
       15 
     | 
    
         
            -
                            streams: {
         
     | 
| 
       16 
     | 
    
         
            -
                              text: 'bd459118e6175689e4394e242debc2ae'
         
     | 
| 
       17 
     | 
    
         
            -
                            }
         
     | 
| 
       18 
     | 
    
         
            -
                          }
         
     | 
| 
       19 
     | 
    
         
            -
                        }, {
         
     | 
| 
       20 
     | 
    
         
            -
                          name: 'Compositor.enqueue_2',
         
     | 
| 
       21 
     | 
    
         
            -
                          width: 5,
         
     | 
| 
       22 
     | 
    
         
            -
                          height: 5,
         
     | 
| 
       23 
     | 
    
         
            -
                          lines: {
         
     | 
| 
       24 
     | 
    
         
            -
                            streams: {
         
     | 
| 
       25 
     | 
    
         
            -
                              text: '837acb2cb2ea3ef359257851142a7830'
         
     | 
| 
       26 
     | 
    
         
            -
                            }
         
     | 
| 
       27 
     | 
    
         
            -
                          }
         
     | 
| 
       28 
     | 
    
         
            -
                        }
         
     | 
| 
       29 
     | 
    
         
            -
                      ]
         
     | 
| 
       30 
     | 
    
         
            -
                    }
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                    Compositor.enqueue(attributes)
         
     | 
| 
       33 
     | 
    
         
            -
                    Persistence
         
     | 
| 
       34 
     | 
    
         
            -
                      .query('Compositor.enqueue_1').dequeue
         
     | 
| 
       35 
     | 
    
         
            -
                      .must_match(/bd459118e6175689e4394e242debc2ae/)
         
     | 
| 
       36 
     | 
    
         
            -
                    Persistence
         
     | 
| 
       37 
     | 
    
         
            -
                      .query('Compositor.enqueue_2').dequeue
         
     | 
| 
       38 
     | 
    
         
            -
                      .must_match(/837acb2cb2ea3ef359257851142a7830/)
         
     | 
| 
       39 
     | 
    
         
            -
                  end
         
     | 
| 
       40 
     | 
    
         
            -
                end
         
     | 
| 
       41 
     | 
    
         
            -
              end
         
     | 
| 
       42 
     | 
    
         
            -
            end
         
     |