Sha256: 6a79b229ce4f552fb6864f678cf9d93820d799cbb0054b9d23a4bbc797d12051

Contents?: true

Size: 1.68 KB

Versions: 1

Compression:

Stored size: 1.68 KB

Contents

module Rapidoc

  ##
  # This module parse controllers comments to yaml format
  #
  module YamlParser

    ##
    # Check if exist a block with resource information 'rapidoc resource block'
    #
    # @param lines [Array] lines that contain comments
    # @param blocks [Hash] lines of blocks, example: { init: 1, end: 4 }
    # @return [Hash] resource info
    #
    def extract_resource_info( lines, blocks, file_name )
      blocks ? info = [] : blocks = []
      blocks.each.map do |b|
        if lines[ b[:init] ].include? "=begin resource"
          n_lines = b[:end] - b[:init] - 1
          begin
            info.push YAML.load( lines[ b[:init] +1, n_lines ].join.gsub(/\ *#/, '') )
          rescue Psych::SyntaxError => e
            puts "Error parsing block in #{file_name} file [#{b[:init]} - #{b[:end]}]"
          rescue => e
            puts e
          end
        end
      end

      info.first ? info.first : {}
    end

    ##
    # Check all blocks and load those that are 'rapidoc actions block'
    #
    # @param lines [Array] lines that contain comments
    # @param blocks [Hash] lines of blocks, example: { init: 1, end: 4 }
    # @return [Array] all actions info
    #
    def extract_actions_info( lines, blocks, file_name )
      info = []
      blocks = [] unless blocks

      blocks.each do |b|
        if lines[ b[:init] ].include? "=begin action"
          n_lines = b[:end] - b[:init] - 1

          begin
            info << YAML.load( lines[ b[:init] + 1, n_lines ].join.gsub(/\ *#/, '') )
          rescue Exception => e
            puts "Error parsing block in #{file_name} file [#{b[:init]} - #{b[:end]}]"
          end
        end
      end

      return info
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rapidoc-0.0.7 lib/rapidoc/yaml_parser.rb