bookie 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/bookie/parser.rb CHANGED
@@ -1,20 +1,30 @@
1
1
  module Bookie
2
+ ContentTree = Struct.new(:children)
3
+ Paragraph = Struct.new(:children)
4
+
2
5
  class Parser
3
6
  def self.parse(contents)
4
7
  parser = new(contents)
5
8
  parser.document_tree
6
9
  end
7
10
 
11
+ attr_reader :document_tree
12
+
8
13
  def initialize(contents)
9
14
  generate_document_tree(contents)
10
15
  end
11
16
 
12
- attr_reader :document_tree
17
+ def extract_paragraphs(contents)
18
+ contents.split(/\n\n+/).each do |e|
19
+ document_tree.children << Paragraph.new([e])
20
+ end
21
+ end
13
22
 
14
23
  private
15
24
 
16
25
  def generate_document_tree(contents)
17
- @document_tree = contents.split(/\n\n+/)
26
+ @document_tree = ContentTree.new([])
27
+ extract_paragraphs(contents)
18
28
  end
19
29
  end
20
30
  end
@@ -1,3 +1,3 @@
1
1
  module Bookie
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,7 @@
1
+ However, it isn’t sufficient just to have a group of people studying the craft
2
+ of software development: those have existed as long as software has existed and
3
+ if they were capable of closing this gap, they would have done so by now. A lack
4
+ of sufficient context is what most frequently leads to tribalism in software
5
+ communities, and the end result is a polarizing effect that causes direct harm
6
+ to real progress by generating far more heat than light whenever a certain tool
7
+ or technique is discussed.
data/test/suite.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  require_relative "test_helper"
2
2
 
3
3
  require_relative "units/document_test"
4
+ require_relative "units/parser_test"
@@ -2,9 +2,9 @@ require_relative "../test_helper"
2
2
 
3
3
  context "A Document" do
4
4
  test "should be parsed into an array of contents" do
5
- sample_text = fixture("multi_paragraph_document.markdown")
5
+ sample_text = fixture("multi_paragraph_document.md")
6
6
  document = Bookie::Document.new(sample_text)
7
7
 
8
- refute document.contents.empty?, "contents should not be empty"
8
+ refute document.contents.children.empty?, "contents should not be empty"
9
9
  end
10
10
  end
@@ -0,0 +1,19 @@
1
+ require_relative "../test_helper"
2
+
3
+ context "A Parser" do
4
+ test "should know about paragraphs" do
5
+ sample_text = File.read(fixture("multi_paragraph_document.md"))
6
+
7
+ # NOTE: Is this the behavior we'd expect?
8
+ sample_paragraph_text = File.read(fixture("single_paragraph.md")).chomp
9
+
10
+ tree = Bookie::Parser.parse(sample_text)
11
+
12
+ assert_equal 8, tree.children.length
13
+
14
+ actual_paragraph = tree.children[4]
15
+ actual_paragraph_text = actual_paragraph.children.first
16
+
17
+ assert_equal sample_paragraph_text, actual_paragraph_text
18
+ end
19
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: bookie
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Gregory Brown
@@ -14,7 +14,7 @@ date: 2011-04-23 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
17
- description: Eventually this may be a markdown to PDF, ePUB, MOBIprocessor. For now it's just something I'm playingaround with, so use at your own risk
17
+ description: Eventually this may be a markdown to PDF, ePUB, MOBI processor. For now it's just something I'm playing around with, so use at your own risk
18
18
  email:
19
19
  - gregory.t.brown@gmail.com
20
20
  executables: []
@@ -29,9 +29,11 @@ files:
29
29
  - lib/bookie/version.rb
30
30
  - lib/bookie.rb
31
31
  - test/fixtures/multi_paragraph_document.md
32
+ - test/fixtures/single_paragraph.md
32
33
  - test/suite.rb
33
34
  - test/test_helper.rb
34
35
  - test/units/document_test.rb
36
+ - test/units/parser_test.rb
35
37
  - GPLv3
36
38
  - README.md
37
39
  - CHANGELOG.md