Class: CodelessCode::Fable

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/codeless_code/fable.rb

Constant Summary collapse

HEADER_PATTERN =
/([^:\s]+)\s*:\s*(.+)\s*$/.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file) ⇒ Fable

Returns a new instance of Fable.



31
32
33
34
35
# File 'lib/codeless_code/fable.rb', line 31

def initialize(file)
  self.file = file
  @read_headers = false
  @body_pos = nil
end

Instance Attribute Details

#fileObject

Returns the value of attribute file.



25
26
27
# File 'lib/codeless_code/fable.rb', line 25

def file
  @file
end

Instance Method Details

#bodyObject Also known as: to_s



37
38
39
# File 'lib/codeless_code/fable.rb', line 37

def body
  @body ||= read_body.freeze
end

#creditsObject



73
74
75
# File 'lib/codeless_code/fable.rb', line 73

def credits
  self['Credits']
end

#dateObject



53
54
55
# File 'lib/codeless_code/fable.rb', line 53

def date
  ::Date.parse(self['Date']) if header?('Date')
end

#geekinessObject



81
82
83
# File 'lib/codeless_code/fable.rb', line 81

def geekiness
  self['Geekiness'].to_i
end

#header?(key) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/codeless_code/fable.rb', line 49

def header?(key)
  headers.key?(key)
end

#headersObject



42
43
44
45
46
47
# File 'lib/codeless_code/fable.rb', line 42

def headers
  @headers ||= begin
                 @read_headers = true
                 read_headers.freeze
               end
end

#langObject



57
58
59
# File 'lib/codeless_code/fable.rb', line 57

def lang
  @lang ||= dir_parts.first.to_sym
end

#namesObject



85
86
87
# File 'lib/codeless_code/fable.rb', line 85

def names
  list('Names')
end

#numberObject



77
78
79
# File 'lib/codeless_code/fable.rb', line 77

def number
  self['Number'].to_i
end

#read_headers?Object

Returns the value of attribute read_headers.



28
29
30
# File 'lib/codeless_code/fable.rb', line 28

def read_headers
  @read_headers
end

#taglineObject



69
70
71
# File 'lib/codeless_code/fable.rb', line 69

def tagline
  self['Tagline']
end

#titleObject



65
66
67
# File 'lib/codeless_code/fable.rb', line 65

def title
  self['Title']
end

#topicsObject



89
90
91
# File 'lib/codeless_code/fable.rb', line 89

def topics
  list('Topics')
end

#translatorObject



61
62
63
# File 'lib/codeless_code/fable.rb', line 61

def translator
  @translator ||= dir_parts.last
end