Class: FixtureReader
- Inherits:
-
Object
- Object
- FixtureReader
- Includes:
- LogUtils::Logging
- Defined in:
- lib/textutils/reader/fixture_reader.rb
Overview
use ManifestReader ?? why? why not? - reuse in manifest gem (or manman e.g. manifest manger) ??
Class Method Summary collapse
Instance Method Summary collapse
- #each ⇒ Object
-
#initialize(arg) ⇒ FixtureReader
constructor
A new instance of FixtureReader.
-
#plain_text_reader(text) ⇒ Object
find a better name - just read?.
Constructor Details
#initialize(arg) ⇒ FixtureReader
Returns a new instance of FixtureReader.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/textutils/reader/fixture_reader.rb', line 40 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 |
Class Method Details
.from_file(path) ⇒ Object
28 29 30 31 32 33 |
# File 'lib/textutils/reader/fixture_reader.rb', line 28 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) ⇒ Object
35 36 37 |
# File 'lib/textutils/reader/fixture_reader.rb', line 35 def self.from_string( text ) FixtureReader.new( { text: text } ) end |
.from_zip(zip_file, entry_path) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# 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() self.from_string( text ) end |
Instance Method Details
#each ⇒ Object
104 105 106 107 108 |
# File 'lib/textutils/reader/fixture_reader.rb', line 104 def each @ary.each do |fixture| yield( fixture ) end end |
#plain_text_reader(text) ⇒ Object
find a better name - just read?
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/textutils/reader/fixture_reader.rb', line 63 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 |