class Hiroiyomi::Html::Attribute
Attributes
name[RW]
value[RW]
Public Class Methods
new(name, value = nil)
click to toggle source
# File lib/hiroiyomi/html/attribute.rb, line 60 def initialize(name, value = nil) @name = name @value = value end
value_of(file)
click to toggle source
# File lib/hiroiyomi/html/attribute.rb, line 12 def value_of(file) name = DOMParserHelper.extract_string(file) return nil if name.empty? value = extract_value(file) Attribute.new(name, value.empty? ? nil : value) end
Private Class Methods
extract_value(file)
click to toggle source
rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity name=value
Check spaces and > whether value is end
name=“value” name='value'
# File lib/hiroiyomi/html/attribute.rb, line 26 def extract_value(file) value = '' open = { "'" => false, '"' => false } equal = false while (c = file.getc) case c when "'", '"' break if open[c] open_keys = open.keys open_keys.delete(c) if open[open_keys.first] value += c else open[c] = true end else if open.values.any? value += c elsif c == '=' equal = true elsif ['>', ' '].include?(c) file.ungetc(c) break elsif equal value += c end end end value end
Public Instance Methods
to_s()
click to toggle source
# File lib/hiroiyomi/html/attribute.rb, line 65 def to_s "#{name}=\"#{value}\"" end