railroad_diagrams 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/CHANGELOG.md +7 -0
 - data/LICENSE.txt +21 -0
 - data/MIT +21 -0
 - data/README.md +30 -0
 - data/Rakefile +4 -0
 - data/exe/railroad_diagrams +7 -0
 - data/lib/railroad_diagrams/alternating_sequence.rb +169 -0
 - data/lib/railroad_diagrams/choice.rb +209 -0
 - data/lib/railroad_diagrams/command.rb +84 -0
 - data/lib/railroad_diagrams/comment.rb +48 -0
 - data/lib/railroad_diagrams/diagram.rb +107 -0
 - data/lib/railroad_diagrams/diagram_item.rb +77 -0
 - data/lib/railroad_diagrams/diagram_multi_container.rb +23 -0
 - data/lib/railroad_diagrams/end.rb +39 -0
 - data/lib/railroad_diagrams/group.rb +75 -0
 - data/lib/railroad_diagrams/horizontal_choice.rb +247 -0
 - data/lib/railroad_diagrams/multiple_choice.rb +140 -0
 - data/lib/railroad_diagrams/non_terminal.rb +67 -0
 - data/lib/railroad_diagrams/one_or_more.rb +86 -0
 - data/lib/railroad_diagrams/optional.rb +9 -0
 - data/lib/railroad_diagrams/optional_sequence.rb +214 -0
 - data/lib/railroad_diagrams/path.rb +117 -0
 - data/lib/railroad_diagrams/sequence.rb +59 -0
 - data/lib/railroad_diagrams/skip.rb +26 -0
 - data/lib/railroad_diagrams/stack.rb +120 -0
 - data/lib/railroad_diagrams/start.rb +62 -0
 - data/lib/railroad_diagrams/style.rb +67 -0
 - data/lib/railroad_diagrams/terminal.rb +63 -0
 - data/lib/railroad_diagrams/text_diagram.rb +341 -0
 - data/lib/railroad_diagrams/version.rb +5 -0
 - data/lib/railroad_diagrams/zero_or_more.rb +9 -0
 - data/lib/railroad_diagrams.rb +50 -0
 - data/sample/sample.html +215 -0
 - data/test.rb +570 -0
 - metadata +81 -0
 
| 
         @@ -0,0 +1,50 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module RailroadDiagrams
         
     | 
| 
      
 4 
     | 
    
         
            +
              VS = 8 # minimum vertical separation between things. For a 3px stroke, must be at least 4
         
     | 
| 
      
 5 
     | 
    
         
            +
              AR = 10 # radius of arcs
         
     | 
| 
      
 6 
     | 
    
         
            +
              DIAGRAM_CLASS = 'railroad-diagram' # class to put on the root <svg>
         
     | 
| 
      
 7 
     | 
    
         
            +
              STROKE_ODD_PIXEL_LENGTH =
         
     | 
| 
      
 8 
     | 
    
         
            +
                true # is the stroke width an odd (1px, 3px, etc) pixel length?
         
     | 
| 
      
 9 
     | 
    
         
            +
              INTERNAL_ALIGNMENT =
         
     | 
| 
      
 10 
     | 
    
         
            +
                'center' # how to align items when they have extra space. left/right/center
         
     | 
| 
      
 11 
     | 
    
         
            +
              CHAR_WIDTH = 8.5 # width of each monospace character. play until you find the right value for your font
         
     | 
| 
      
 12 
     | 
    
         
            +
              COMMENT_CHAR_WIDTH = 7 # comments are in smaller text by default
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              def self.escape_attr(val)
         
     | 
| 
      
 15 
     | 
    
         
            +
                return val.gsub('&', '&').gsub("'", ''').gsub('"', '"') if val.is_a?(String)
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                '%g' % val
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              def self.escape_html(val)
         
     | 
| 
      
 21 
     | 
    
         
            +
                escape_attr(val).gsub('<', '<')
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            require_relative 'railroad_diagrams/diagram_item'
         
     | 
| 
      
 26 
     | 
    
         
            +
            require_relative 'railroad_diagrams/diagram_multi_container'
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            require_relative 'railroad_diagrams/alternating_sequence'
         
     | 
| 
      
 29 
     | 
    
         
            +
            require_relative 'railroad_diagrams/choice'
         
     | 
| 
      
 30 
     | 
    
         
            +
            require_relative 'railroad_diagrams/command'
         
     | 
| 
      
 31 
     | 
    
         
            +
            require_relative 'railroad_diagrams/comment'
         
     | 
| 
      
 32 
     | 
    
         
            +
            require_relative 'railroad_diagrams/diagram'
         
     | 
| 
      
 33 
     | 
    
         
            +
            require_relative 'railroad_diagrams/end'
         
     | 
| 
      
 34 
     | 
    
         
            +
            require_relative 'railroad_diagrams/group'
         
     | 
| 
      
 35 
     | 
    
         
            +
            require_relative 'railroad_diagrams/horizontal_choice'
         
     | 
| 
      
 36 
     | 
    
         
            +
            require_relative 'railroad_diagrams/multiple_choice'
         
     | 
| 
      
 37 
     | 
    
         
            +
            require_relative 'railroad_diagrams/non_terminal'
         
     | 
| 
      
 38 
     | 
    
         
            +
            require_relative 'railroad_diagrams/one_or_more'
         
     | 
| 
      
 39 
     | 
    
         
            +
            require_relative 'railroad_diagrams/optional_sequence'
         
     | 
| 
      
 40 
     | 
    
         
            +
            require_relative 'railroad_diagrams/optional'
         
     | 
| 
      
 41 
     | 
    
         
            +
            require_relative 'railroad_diagrams/path'
         
     | 
| 
      
 42 
     | 
    
         
            +
            require_relative 'railroad_diagrams/sequence'
         
     | 
| 
      
 43 
     | 
    
         
            +
            require_relative 'railroad_diagrams/skip'
         
     | 
| 
      
 44 
     | 
    
         
            +
            require_relative 'railroad_diagrams/stack'
         
     | 
| 
      
 45 
     | 
    
         
            +
            require_relative 'railroad_diagrams/start'
         
     | 
| 
      
 46 
     | 
    
         
            +
            require_relative 'railroad_diagrams/style'
         
     | 
| 
      
 47 
     | 
    
         
            +
            require_relative 'railroad_diagrams/terminal'
         
     | 
| 
      
 48 
     | 
    
         
            +
            require_relative 'railroad_diagrams/text_diagram'
         
     | 
| 
      
 49 
     | 
    
         
            +
            require_relative 'railroad_diagrams/version'
         
     | 
| 
      
 50 
     | 
    
         
            +
            require_relative 'railroad_diagrams/zero_or_more'
         
     |