Class: CodelessCode::Fable

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

Overview

Model/Adapter for a “Codeless Code” fable stored in a text file.

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)
  @file = file
  @read_headers = false
  @body_pos = nil
end

Instance Attribute Details

#fileObject (readonly)

Returns the value of attribute file.



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

def file
  @file
end

Instance Method Details

#bodyString Also known as: to_s

Returns the actual story, including MediaWiki markup.

Returns:

  • the actual story, including MediaWiki markup



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

def body
  @body ||= read_body.freeze
end

#creditsObject



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

def credits
  self['Credits']
end

#date::Date?

Returns:



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

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

#geekinessObject



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

def geekiness
  self['Geekiness'].to_i
end

#header?(key) ⇒ Boolean

Returns:



51
52
53
# File 'lib/codeless_code/fable.rb', line 51

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

#headersHash<String, String>

Returns the story’s metadata.

Returns:

  • the story’s metadata



44
45
46
47
48
49
# File 'lib/codeless_code/fable.rb', line 44

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

#langSymbol

Returns:



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

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

#namesObject



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

def names
  list('Names')
end

#numberObject



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

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



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

def tagline
  self['Tagline']
end

#titleObject



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

def title
  self['Title']
end

#topicsObject



93
94
95
# File 'lib/codeless_code/fable.rb', line 93

def topics
  list('Topics')
end

#translatorObject



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

def translator
  @translator ||= dir_parts.last
end