class FixtureReader
use ManifestReader ?? why? why not? - reuse in manifest gem (or manman e.g. manifest manger) ??
Public Class Methods
from_file( path )
click to toggle source
# File lib/textutils/reader/fixture_reader.rb, line 43 def self.from_file( path ) ## note: assume/enfore utf-8 encoding (with or without BOM - byte order mark) ## - see textutils/utils.rb text = File.read_utf8( path ) self.from_string( text ) end
from_string( text )
click to toggle source
# File lib/textutils/reader/fixture_reader.rb, line 50 def self.from_string( text ) FixtureReader.new( { text: text } ) end
from_zip( zip_file, entry_path )
click to toggle source
# File lib/textutils/reader/fixture_reader.rb, line 16 def self.from_zip( zip_file, entry_path ) entry = zip_file.find_entry( entry_path ) ## todo/fix: add force encoding to utf-8 ?? ## check!!! ## clean/prepprocess lines ## e.g. CR/LF (/r/n) to LF (e.g. /n) text = entry.get_input_stream().read() ## NOTE: needs logger ref; only available in instance methods; use global logger for now logger = LogUtils::Logger.root logger.debug "text.encoding.name (before): #{text.encoding.name}" ##### # NB: ASCII-8BIT == BINARY == Encoding Unknown; Raw Bytes Here ## NB: # for now "hardcoded" to utf8 - what else can we do? # - note: force_encoding will NOT change the chars only change the assumed encoding w/o translation text = text.force_encoding( Encoding::UTF_8 ) logger.debug "text.encoding.name (after): #{text.encoding.name}" ## todo: # NB: for convenience: convert fancy unicode dashes/hyphens to plain ascii hyphen-minus ## text = TextUtils.convert_unicode_dashes_to_plain_ascii( text, path: path ) self.from_string( text ) end
new( arg )
click to toggle source
# File lib/textutils/reader/fixture_reader.rb, line 55 def initialize( arg ) if arg.is_a?( String ) ## old style (deprecated) - pass in filepath as string path = arg logger.info "FixtureReader.new - deprecated API - use FixtureReader.from_file() instead" text = File.read_utf8( path ) else ## assume it's a hash opts = arg text = opts[:text] end @ary = [] ## nb: assume/enfore utf-8 encoding (with or without BOM - byte order mark) ## - see textutils/utils.rb @ary = plain_text_reader( text ) logger.debug "fixture setup:" logger.debug @ary.to_json end
Public Instance Methods
each() { |fixture| ... }
click to toggle source
# File lib/textutils/reader/fixture_reader.rb, line 119 def each @ary.each do |fixture| yield( fixture ) end end
plain_text_reader( text )
click to toggle source
# File lib/textutils/reader/fixture_reader.rb, line 78 def plain_text_reader( text ) ## find a better name - just read? ## use LineReader ?? for (re)use of comment processing - why? why not??? ### build up array for fixtures from hash ary = [] text.each_line do |line| # comments allow: # 1) ##### (shell/ruby style) # 2) -- comment here (haskel/?? style) # 3) % comment here (tex/latex style) if line =~ /^\s*#/ || line =~ /^\s*--/ || line =~ /^\s*%/ # skip komments and do NOT copy to result (keep comments secret!) logger.debug 'skipping comment line' next end if line =~ /^\s*$/ # skip blank lines logger.debug 'skipping blank line' next end # pass 1) remove possible trailing eol comment ## e.g -> nyc, New York # Sample EOL Comment Here (with or without commas,,,,) ## becomes -> nyc, New York line = line.sub( /\s+#.+$/, '' ) # pass 2) remove leading and trailing whitespace line = line.strip ary << line end # each lines ary # return fixture ary end