markdown_datafier 1.0.0 → 1.0.1
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.
- checksums.yaml +4 -4
- data/README.md +23 -9
- data/lib/markdown_datafier.rb +19 -4
- data/lib/markdown_datafier/version.rb +1 -1
- data/spec/fixtures/instances/bob.mdown +12 -0
- data/spec/fixtures/instances/doug.mdown +13 -0
- data/spec/fixtures/instances/instance-sub-dir/article-one.mdown +15 -0
- data/spec/fixtures/instances/instance-sub-dir/article-two.mdown +15 -0
- data/spec/fixtures/instances/satan.mdown +13 -0
- data/spec/fixtures/{content → server_content}/index.mdown +0 -0
- data/spec/fixtures/{content → server_content}/section-one/index.mdown +0 -0
- data/spec/fixtures/{content → server_content}/section-one/sub-one-test-one.mdown +0 -0
- data/spec/fixtures/{content → server_content}/section-two/child-section-one/child-one-test-one.mdown +0 -0
- data/spec/fixtures/{content → server_content}/section-two/child-section-one/index.mdown +0 -0
- data/spec/fixtures/{content → server_content}/section-two/index.mdown +0 -0
- data/spec/fixtures/{content → server_content}/section-two/sub-two-test-one.mdown +0 -0
- data/spec/fixtures/{content → server_content}/splash.mdown +0 -0
- data/spec/fixtures/{content → server_content}/test-one.mdown +0 -0
- data/spec/fixtures/{content → server_content}/test-two.mdown +0 -0
- data/spec/markdown_datafier_spec.rb +195 -193
- data/spec/spec_helper.rb +8 -0
- metadata +32 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cde3f4e2699fa8a1e0bb15dd12d6012b1cc83891
|
4
|
+
data.tar.gz: 63a7eadf7972a49192beef734692711b03339081
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 686ef848dd143ba3a2311f4c069997164ac9d0dfc87641afdbc192a71cf34039da69d08b81212efb7e03887ec57695c8b8319f8d62ed9a569661a151f2ec7b2b
|
7
|
+
data.tar.gz: 3eafeab8de7ccce91f5de2537c0b1382ca29d6403150f8a961ce155bc43de4698b5b5f8a124c7e90edd696e3feb7f310e27e97fd756c87a1cd8107527fd1f617
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@ MarkdownDatafier is a ruby gem which reads a structure of Markdown files, parses
|
|
4
4
|
|
5
5
|
MarkdownDatafier was inspired by the NestaCMS framework. But instead of a self-contained CMS, I simply wanted to get data out of a Markdown file structure to be used however I like (direct into Mustache templates via server-side Sinarta or Rails; or via an API endpoint to a javascript framework, iOS/Android app, and so on).
|
6
6
|
|
7
|
-
This
|
7
|
+
This gem was developed and tested using Ruby 2.0.0p353.
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
@@ -20,24 +20,32 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
$ gem install markdown_datafier
|
22
22
|
|
23
|
-
##
|
23
|
+
## Setup
|
24
24
|
|
25
|
-
Create an object
|
25
|
+
Create an object, include MarkdownDatafier and set the absolute path to your Markdown files to the @@content_path global variable:
|
26
26
|
|
27
27
|
require 'markdown_datafier'
|
28
|
-
class
|
28
|
+
class MyDatafier
|
29
29
|
include MarkdownDatafier
|
30
30
|
end
|
31
31
|
|
32
|
-
|
32
|
+
## Usage
|
33
33
|
|
34
|
-
|
34
|
+
I've attempting to design this module to be useful in a few different ways, depending on your needs. In each case, you create a server instance targeted at the content directory of your choosing. However, how you design your application to both represent your content in Markdown and what you do with the resulting structured data is up to you. For instance, you can set it up so that each page of a website is represented by the structure of your Markdown files and subdirectories (look in /spec/fixtures/server_content/ for an example of this). Or, you could alternatively use each Markdown file to represent persistence of object data (look in /spec/fixtures/instances/ for an example of this), which could then be used to create objects on another class.
|
35
35
|
|
36
|
-
|
36
|
+
Set up an instance of your server, passing the relative path to your content directory as shown:
|
37
37
|
|
38
|
-
|
38
|
+
server = MyDatafier.new(content_path: "/path/to/content/directory")
|
39
39
|
|
40
|
-
|
40
|
+
If you want an array of hashes representing each Markdown file in the immediate :content_path, do:
|
41
|
+
|
42
|
+
content = server.collect
|
43
|
+
|
44
|
+
If you want an array of hashes representing each Markdown file in a subdirectory of :content_path, do:
|
45
|
+
|
46
|
+
content = server.collect("some_sub_directory")
|
47
|
+
|
48
|
+
Files can also be accessed individually by their "shortname" (the file name path inside your content_directory minus the extension, OR the parent directory name)
|
41
49
|
|
42
50
|
content = server.find_by_path(some-existing-file)
|
43
51
|
|
@@ -51,6 +59,8 @@ Or a splash page like so:
|
|
51
59
|
|
52
60
|
content = server.splash_page
|
53
61
|
|
62
|
+
Both the home_page and splash pages work by the naming convention on the root :content_path.
|
63
|
+
|
54
64
|
You can also grab a collection of indexes for the top level sections of your content
|
55
65
|
|
56
66
|
collection = server.indexes_for_sections
|
@@ -61,6 +71,10 @@ Or specify a sub level (for instance by using the "shortname" of previously retr
|
|
61
71
|
|
62
72
|
Take a look at the file structure in spec/fixtures/content to see how the directory structure and meta data works.
|
63
73
|
|
74
|
+
## Recommendation
|
75
|
+
|
76
|
+
This will all work just dandy running as it is in ObjectSpace. However, the intention is that you would use Markdown files to manage your content and its structure, and either use Rake to generate actual HTML files or set up some sort of caching system (clearing and rewriting your cache when content is changed). There's no need to be doing all this parsing overhead with each request to your application.
|
77
|
+
|
64
78
|
## Contributing
|
65
79
|
|
66
80
|
1. Fork it
|
data/lib/markdown_datafier.rb
CHANGED
@@ -3,13 +3,28 @@ require "time"
|
|
3
3
|
require "redcarpet"
|
4
4
|
|
5
5
|
module MarkdownDatafier
|
6
|
-
attr_accessor :content_directory
|
7
6
|
class MetadataParseError < RuntimeError; end
|
8
7
|
|
8
|
+
attr_accessor :content_path
|
9
|
+
|
9
10
|
def self.root
|
10
11
|
File.expand_path '../..', __FILE__
|
11
12
|
end
|
12
13
|
|
14
|
+
def initialize(attributes)
|
15
|
+
@content_path = attributes[:content_path]
|
16
|
+
end
|
17
|
+
|
18
|
+
def collect(directory=nil)
|
19
|
+
directory = directory.nil? ? @content_path : "#{@content_path}#{directory}"
|
20
|
+
collection = []
|
21
|
+
Dir.foreach(directory) do |f|
|
22
|
+
next if f == '.' || f == '..' || File.extname(f) != ".mdown"
|
23
|
+
collection << find_by_path(File.basename(f, ".mdown"))
|
24
|
+
end
|
25
|
+
collection
|
26
|
+
end
|
27
|
+
|
13
28
|
def home_page
|
14
29
|
find_by_path("index")
|
15
30
|
end
|
@@ -21,10 +36,10 @@ module MarkdownDatafier
|
|
21
36
|
def indexes_for_sections(directory=nil)
|
22
37
|
sections = []
|
23
38
|
if directory.nil?
|
24
|
-
Dir.chdir(
|
39
|
+
Dir.chdir(@content_path)
|
25
40
|
currrent_dir_name = ""
|
26
41
|
else
|
27
|
-
Dir.chdir(
|
42
|
+
Dir.chdir(@content_path + directory)
|
28
43
|
currrent_dir_name = File.basename(Dir.pwd)
|
29
44
|
end
|
30
45
|
sub_directories.each do |section|
|
@@ -39,7 +54,7 @@ module MarkdownDatafier
|
|
39
54
|
|
40
55
|
def find_by_path(shortname)
|
41
56
|
begin
|
42
|
-
path = determine_file_path(
|
57
|
+
path = determine_file_path(@content_path + strip_leading_slashes(shortname))
|
43
58
|
content = "Shortname: #{shortname}\nCreate Datetime: #{File.ctime(path)}\n" + File.open(path).read
|
44
59
|
parse_file_content(content)
|
45
60
|
rescue
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Last Name: Bob
|
2
|
+
First Name: Franks
|
3
|
+
Phone: 555-213-1212
|
4
|
+
Favorite Food: Pickles
|
5
|
+
Birthdate Date: 23 July 1970
|
6
|
+
Summary: Bob is a really good guy who does nice things.
|
7
|
+
|
8
|
+
# This guy is great
|
9
|
+
|
10
|
+
Americano acerbic turkish so ristretto single origin wings. Kopi-luwak body id coffee sugar saucer café au lait id aroma. Galão, americano sit milk cup extra, arabica crema cup java con panna. Cultivar black redeye to go pumpkin spice so aromatic turkish cultivar fair trade.
|
11
|
+
|
12
|
+
Plunger pot, blue mountain ut decaffeinated coffee irish viennese. Black, coffee caffeine cortado froth kopi-luwak, cream iced cup aromatic acerbic. Cup, ristretto, cappuccino seasonal as variety, in chicory a body variety. Black caramelization, galão, viennese grounds sit froth lungo.
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Last Name: Doug
|
2
|
+
First Name: Simsom
|
3
|
+
Phone: 555-987-4534
|
4
|
+
Favorite Food: Pizza
|
5
|
+
Birthdate Date: 3 October 1969
|
6
|
+
Summary: Doug is kind of invisible. In fact, who is he?
|
7
|
+
Nav Name: Invisible Doug
|
8
|
+
|
9
|
+
# This guy exists, I think
|
10
|
+
|
11
|
+
A, bar americano est, galão sugar sit half and half frappuccino. Saucer, plunger pot, est frappuccino filter chicory robusta cultivar. Pumpkin spice, eu flavour pumpkin spice and café au lait, saucer dark french press filter that chicory. Skinny medium wings, steamed percolator dark cinnamon body half and half.
|
12
|
+
|
13
|
+
Dark fair trade siphon bar robusta that blue mountain a carajillo. Wings iced, aged dark est qui froth, skinny id lungo spoon turkish. Cup saucer java cortado frappuccino kopi-luwak aromatic. White, strong doppio, cup carajillo crema redeye seasonal and that.
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Title Tag: Article One | My Website
|
2
|
+
Description: This is a description meta for article one.
|
3
|
+
Keywords: rspec, testing, markdown
|
4
|
+
Publish Date: 23 July 2010 00:00 EST
|
5
|
+
Summary: This is a summary text for article one.
|
6
|
+
|
7
|
+
# 10 Amazing Things This Dog Did Which Will Blow Your Heart Valves
|
8
|
+
|
9
|
+
Redeye french press carajillo, to go roast caramelization galão whipped in rich acerbic in spoon. Milk froth caramelization carajillo cappuccino redeye cinnamon, brewed breve, viennese, plunger pot spoon, cream, as, caramelization body decaffeinated mug spoon. Siphon redeye plunger pot, half and half acerbic robusta redeye espresso, skinny, dripper single origin foam, cinnamon espresso single origin americano sweet americano carajillo. Americano cream, black carajillo beans viennese aged, et cultivar crema, redeye organic, viennese french press iced, dark, affogato acerbic carajillo cup extra. In sugar dripper, seasonal extra aftertaste rich roast white, decaffeinated white, latte single shot coffee affogato macchiato aroma aromatic skinny coffee ut siphon breve. Siphon, and caramelization whipped aftertaste white sweet mocha, mazagran java breve to go, carajillo breve, macchiato, robusta blue mountain aroma mug arabica irish turkish. Coffee white aroma, grounds decaffeinated mazagran, chicory kopi-luwak acerbic affogato, to go cinnamon trifecta cultivar filter. Organic wings americano eu plunger pot saucer, chicory, roast iced affogato half and half milk whipped affogato half and half extra aftertaste, sit dripper froth siphon cup sugar acerbic. Caffeine, beans steamed caramelization blue mountain arabica, cup, froth blue mountain body, doppio coffee cappuccino turkish to go. Body grounds cappuccino, mazagran robusta, strong black fair trade, frappuccino lungo robusta sugar affogato. Aroma mug redeye spoon, irish cinnamon, caramelization, breve cappuccino crema, ut, dark barista crema robusta body affogato white grinder extraction.
|
10
|
+
|
11
|
+
Seasonal white in, caffeine skinny to go, id, eu kopi-luwak pumpkin spice that trifecta pumpkin spice viennese caramelization breve. Aged strong, cream, sweet decaffeinated, barista mocha skinny java white redeye steamed, and breve cortado cup cappuccino lungo caffeine milk strong dark arabica milk. Irish, cinnamon aromatic espresso brewed, crema, acerbic, chicory redeye, aroma affogato crema latte sweet extraction siphon robusta caramelization cappuccino at saucer barista. A frappuccino cup, espresso café au lait blue mountain wings rich iced seasonal plunger pot pumpkin spice whipped affogato, organic filter, qui et iced siphon white. Percolator, arabica whipped ut mocha dripper mocha, white whipped, frappuccino extra seasonal lungo medium saucer in, barista half and half irish as cinnamon doppio barista. White grounds decaffeinated variety extra, decaffeinated french press wings white, plunger pot, iced bar whipped dark, sweet, iced at cortado robust percolator. Viennese single origin cinnamon body, id blue mountain acerbic, at mug bar, chicory java caramelization, cup iced carajillo cinnamon crema. Cup lungo, a froth that to go steamed, viennese, robusta fair trade, milk, caffeine, filter skinny cappuccino irish caramelization extraction brewed flavour espresso. Extraction steamed wings, barista filter acerbic robust shop arabica decaffeinated percolator froth half and half saucer. Seasonal rich carajillo mocha half and half organic affogato saucer seasonal affogato cinnamon saucer skinny foam galão. Decaffeinated as mug, coffee cultivar café au lait turkish rich sugar extraction est saucer sweet galão white filter at aromatic aged eu sit saucer.
|
12
|
+
|
13
|
+
Dripper aroma con panna affogato, ristretto, plunger pot aromatic siphon, acerbic, frappuccino est turkish milk crema. To go iced, percolator americano milk acerbic plunger pot, macchiato, frappuccino cinnamon ristretto acerbic viennese coffee cappuccino americano. Espresso redeye, siphon spoon, bar mocha, french press seasonal grinder affogato milk, cup café au lait percolator et instant medium french press. Wings, con panna cortado spoon, robust decaffeinated java coffee, caramelization roast dripper, single shot so qui french press coffee iced viennese sit roast barista. Coffee et in, siphon, cinnamon, breve strong cultivar to go, coffee whipped organic id dark. Ristretto, aged filter rich extraction shop froth sweet french press, aroma cream java barista milk rich crema. Blue mountain qui, as, organic cappuccino rich lungo chicory beans ristretto, blue mountain spoon percolator acerbic froth cream that. Qui fair trade con panna aroma est carajillo con panna cup mug dark grinder aromatic coffee in body et seasonal rich milk crema acerbic half and half single origin carajillo. Percolator, carajillo beans cup, ut flavour irish sweet mocha, body steamed, lungo mazagran sweet cappuccino decaffeinated cup whipped. Sweet pumpkin spice filter bar roast fair trade seasonal french press in decaffeinated medium, java, beans steamed, chicory frappuccino extra roast plunger pot variety blue mountain. Qui id est cinnamon seasonal milk whipped americano, aftertaste, dripper brewed seasonal aromatic, whipped fair trade cream breve iced ristretto white.
|
14
|
+
|
15
|
+
Decaffeinated flavour, ut aroma, frappuccino, mazagran pumpkin spice to go acerbic, extraction decaffeinated, carajillo cinnamon americano wings french press at chicory cortado. Mazagran, est cultivar, breve, blue mountain café au lait, cup, latte, blue mountain crema blue mountain and, mocha, cup, variety wings qui et body. Breve id macchiato grounds, variety eu, crema brewed flavour to go robust est cappuccino. Galão, irish decaffeinated, blue mountain seasonal, body fair trade, kopi-luwak percolator mazagran at cinnamon, acerbic saucer coffee as, so frappuccino instant ristretto wings. Turkish macchiato java qui carajillo rich chicory robust java, id redeye foam café au lait froth. Cultivar, est, variety skinny iced white plunger pot, single origin doppio, cup, strong in a crema sugar instant. Coffee ristretto beans con panna cup, coffee strong plunger pot saucer strong ristretto latte at coffee roast. Et cultivar grinder kopi-luwak siphon, id sugar medium shop organic aftertaste half and half caramelization, acerbic filter mocha instant froth shop. Qui cinnamon, cultivar organic flavour, plunger pot milk extraction shop instant half and half, id body, americano caffeine breve cream and mazagran. Spoon wings, carajillo dripper, beans lungo, bar and, so to go aftertaste, medium chicory robusta instant black. Aftertaste iced qui extraction, galão, decaffeinated cultivar, mug, et mazagran americano crema beans crema, single origin robust aromatic medium seasonal.
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Title Tag: Article Two | My Website
|
2
|
+
Description: This is a description meta for article two.
|
3
|
+
Keywords: rspec, testing, markdown
|
4
|
+
Publish Date: 23 July 2010 00:00 EST
|
5
|
+
Summary: This is a summary text for article two.
|
6
|
+
|
7
|
+
# You Won't Believe The Touching Things The Woman Did For A Freakin' Bee
|
8
|
+
|
9
|
+
Flavour extra espresso plunger pot skinny instant and, pumpkin spice, cream ut cup, ut cultivar single origin siphon variety, medium spoon that roast breve cappuccino. Cinnamon con panna sweet cultivar so, caramelization froth and, aroma extraction half and half shop strong, ut wings a french press beans plunger pot. Aged, that galão as extra dripper plunger pot white as saucer crema qui lungo. A half and half crema, siphon, crema variety that mazagran, to go extraction espresso grinder coffee, acerbic java espresso decaffeinated whipped. Instant, sugar, beans, chicory organic, cortado organic robust, cultivar, brewed trifecta ristretto a et so chicory decaffeinated variety. Whipped dark ristretto seasonal caffeine plunger pot chicory irish coffee single origin and galão that. Froth at robust filter viennese sweet cup ut aged arabica, as est con panna, iced, latte cream aromatic cream aromatic so coffee. Cinnamon, single shot, galão variety, frappuccino so, ristretto wings aftertaste robusta whipped mocha, id aftertaste filter brewed aftertaste. Aromatic organic cream con panna, acerbic, cultivar, and ristretto id acerbic as pumpkin spice americano. French press coffee body ut and, spoon in, as black, crema aroma, saucer extra affogato, french press aromatic variety medium extraction shop a turkish. A robusta affogato instant id, steamed est, percolator foam spoon aftertaste americano spoon macchiato organic.
|
10
|
+
|
11
|
+
Grinder aromatic steamed variety and brewed arabica, ut dark in, trifecta, medium viennese beans café au lait variety shop blue mountain spoon. Arabica trifecta, wings, chicory to go decaffeinated as organic pumpkin spice and, kopi-luwak whipped chicory, mocha sugar at lungo aftertaste. Java, lungo filter siphon macchiato dripper, rich as body id aroma, half and half, variety café au lait roast rich instant. Single origin cultivar, grinder arabica, coffee caramelization whipped caramelization variety sweet rich, arabica, cream plunger pot caramelization steamed coffee. As cappuccino qui steamed single origin cappuccino, to go, ut, americano ristretto americano, half and half turkish espresso single origin café au lait, wings, beans robust chicory galão saucer aroma. Aromatic half and half, blue mountain cup, breve dripper single shot id crema americano carajillo, decaffeinated white redeye, black, a, blue mountain dripper ristretto aftertaste black. Extraction caramelization strong, foam, turkish, froth to go redeye, foam cup black breve sweet. Dark medium doppio strong grinder est pumpkin spice, aroma steamed sugar carajillo, eu, sugar caramelization that sugar, blue mountain variety, dripper flavour americano aromatic froth doppio. Sit milk, plunger pot flavour con panna, saucer affogato, foam, brewed half and half mazagran as seasonal single shot arabica, trifecta, french press arabica white mug mazagran variety cortado pumpkin spice. Milk robust and, steamed viennese cup in café au lait flavour iced ut affogato irish mocha chicory rich. Sit, beans pumpkin spice, macchiato grinder cortado viennese roast bar mug americano brewed, rich cup extraction whipped, a, ristretto black, pumpkin spice rich ristretto so sweet.
|
12
|
+
|
13
|
+
Siphon flavour crema, foam in strong qui lungo froth that caffeine cultivar affogato lungo percolator arabica. Turkish, spoon decaffeinated, acerbic single origin, cortado qui, coffee, and decaffeinated skinny doppio con panna chicory. Turkish aroma sugar whipped ristretto aroma coffee carajillo, con panna macchiato, ristretto lungo café au lait viennese cup robusta percolator black coffee seasonal siphon. Mazagran roast spoon strong macchiato ut instant milk viennese ut, brewed foam cream instant turkish extra white macchiato foam cinnamon. Aromatic cinnamon id, irish seasonal galão carajillo latte, white foam brewed sweet caramelization. Cup, foam grinder, half and half turkish, eu strong pumpkin spice macchiato sugar froth, and qui trifecta single shot instant wings. Cortado saucer, aromatic sugar, crema viennese plunger pot kopi-luwak, cream black galão skinny id acerbic. Steamed ristretto whipped black, id, grounds organic black java, cultivar arabica coffee brewed decaffeinated single shot. Mazagran extraction crema, cup sit organic, steamed, frappuccino percolator, brewed arabica chicory, to go chicory, bar con panna chicory turkish grounds frappuccino seasonal rich aromatic galão. Roast, java, and con panna cream, galão in caramelization java caramelization cream steamed, robusta macchiato espresso, white shop redeye cortado body. Medium, and wings ut extraction viennese coffee blue mountain at crema acerbic shop affogato instant turkish.
|
14
|
+
|
15
|
+
Seasonal to go foam eu so extra doppio milk, decaffeinated grounds breve medium plunger pot white brewed, trifecta bar extra café au lait redeye aftertaste percolator aroma. Filter brewed, robusta froth filter, americano, mocha so acerbic, cream skinny acerbic pumpkin spice trifecta caffeine. Cappuccino mazagran sit turkish barista robust, grinder, est fair trade froth, kopi-luwak pumpkin spice est espresso single origin steamed instant in cream single shot. Carajillo, redeye rich coffee grounds, to go half and half ristretto turkish trifecta, aroma doppio cappuccino turkish, cinnamon cappuccino carajillo coffee irish. Caramelization robusta so flavour spoon, foam, con panna, beans, lungo rich, filter, espresso skinny et single shot mug mocha aged sugar con panna. Trifecta ristretto flavour, irish aromatic aftertaste roast java grounds café au lait brewed latte shop extraction sweet. Con panna bar, robust froth, turkish at flavour single origin filter caramelization lungo fair trade rich blue mountain. Doppio single origin cultivar crema, dripper, aftertaste con panna medium single origin coffee java eu cinnamon rich. Doppio decaffeinated organic sit, viennese et organic, macchiato, dripper roast decaffeinated, single origin ristretto half and half single origin frappuccino. Qui viennese medium, barista americano, steamed french press chicory, a, single origin viennese brewed, at qui cream black mocha sit cream. Barista siphon, dark body, trifecta, cappuccino saucer trifecta arabica organic, white macchiato irish, that aged, aroma ut cinnamon strong java whipped.
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Last Name: Satan
|
2
|
+
First Name: Smith
|
3
|
+
Phone: 555-666-7732
|
4
|
+
Favorite Food: Nutella
|
5
|
+
Birthdate Date: 6 December 1966
|
6
|
+
Summary: Satan is kind of a manipulative jerk.
|
7
|
+
Nav Name: Jerky Satan
|
8
|
+
|
9
|
+
# What a jerk
|
10
|
+
|
11
|
+
Cinnamon, robust a crema, foam grounds lungo caffeine beans coffee variety saucer. Decaffeinated cortado acerbic, macchiato, turkish that viennese cinnamon aftertaste. Skinny, a sweet strong café au lait turkish froth rich percolator affogato rich.
|
12
|
+
|
13
|
+
French press, et, extra and, instant, in extra con panna mazagran siphon. Flavour roast pumpkin spice whipped coffee robusta flavour sugar a cinnamon. Chicory iced, filter, java, skinny cultivar macchiato mocha lungo mocha black cortado.
|
File without changes
|
File without changes
|
File without changes
|
data/spec/fixtures/{content → server_content}/section-two/child-section-one/child-one-test-one.mdown
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,251 +1,253 @@
|
|
1
1
|
require_relative 'spec_helper'
|
2
2
|
|
3
3
|
describe MarkdownDatafier do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
describe "initialization" do
|
8
|
-
|
9
|
-
before(:each) do
|
10
|
-
server.content_directory = MarkdownDatafier.root + "/spec/fixtures/content/"
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should set the content_directory" do
|
14
|
-
expect(server.content_directory).to eq MarkdownDatafier.root + "/spec/fixtures/content/"
|
15
|
-
end
|
16
|
-
end
|
4
|
+
context "used as a server" do
|
5
|
+
let(:server) { TestServer.new(content_path: MarkdownDatafier.root + "/spec/fixtures/server_content/") }
|
17
6
|
|
18
|
-
|
19
|
-
|
7
|
+
describe "when file parsing" do
|
8
|
+
let(:contents) { File.open(MarkdownDatafier.root + "/spec/fixtures/server_content/" + "test-one.mdown").read }
|
20
9
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
it "should strip leading slashes from shortname" do
|
26
|
-
shortname = "/test-one"
|
27
|
-
expect(server.strip_leading_slashes(shortname)).to eq "test-one"
|
28
|
-
end
|
10
|
+
it "should strip leading slashes from shortname" do
|
11
|
+
shortname = "/test-one"
|
12
|
+
expect(server.strip_leading_slashes(shortname)).to eq "test-one"
|
13
|
+
end
|
29
14
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
15
|
+
it "should change underscores to dashes" do
|
16
|
+
shortname = "test_one_two_three"
|
17
|
+
expect(server.underscores_to_dashes(shortname)).to eq "test-one-two-three"
|
18
|
+
end
|
34
19
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
20
|
+
it "should check if requested path is a directory" do
|
21
|
+
path = MarkdownDatafier.root + "/spec/fixtures/server_content/section-two/child-section-one"
|
22
|
+
expect(server.is_directory?(path)).to eq true
|
23
|
+
end
|
39
24
|
|
40
|
-
|
41
|
-
|
42
|
-
|
25
|
+
it "should split the meta and body" do
|
26
|
+
expect(server.split_meta_and_body(contents)).to include(:meta, :body)
|
27
|
+
end
|
43
28
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
29
|
+
it "should set publish_datetime when it is provided" do
|
30
|
+
provided_content = {:meta=>
|
31
|
+
{:create_datetime=>"2013-10-21 23:12:06 -0400",
|
32
|
+
:publish_datetime=>"23 July 2010 00:00 EST"}}
|
33
|
+
result = server.determine_publish_datetime(provided_content)
|
34
|
+
expect(result[:meta][:publish_datetime]).to eq "2010-07-23T05:00:00Z"
|
35
|
+
end
|
51
36
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
37
|
+
it "should set publish_datetime from provided publish date" do
|
38
|
+
provided_content = {:meta=>
|
39
|
+
{:create_datetime=>"2013-10-21 23:12:06 -0400",
|
40
|
+
:publish_date=>"23 July 2010"}}
|
41
|
+
result = server.determine_publish_datetime(provided_content)
|
42
|
+
expect(result[:meta][:publish_datetime]).to eq "2010-07-23T04:00:00Z"
|
43
|
+
end
|
59
44
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
45
|
+
it "should set publish_datetime from provided date" do
|
46
|
+
provided_content = {:meta=>
|
47
|
+
{:create_datetime=>"2013-10-21 23:12:06 -0400",
|
48
|
+
:date=>"23 July 2010 00:00 EST"}}
|
49
|
+
result = server.determine_publish_datetime(provided_content)
|
50
|
+
expect(result[:meta][:publish_datetime]).to eq "2010-07-23T05:00:00Z"
|
51
|
+
end
|
67
52
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
53
|
+
it "should set publish_datetime from create datetime when no date meta is provided" do
|
54
|
+
provided_content = {:meta=>
|
55
|
+
{:create_datetime=>"2013-10-21 23:12:06 -0400"}}
|
56
|
+
result = server.determine_publish_datetime(provided_content)
|
57
|
+
expect(result[:meta][:publish_datetime]).to eq "2013-10-22T03:12:06Z"
|
58
|
+
end
|
74
59
|
|
75
|
-
|
60
|
+
describe "resolve shortname to absolute path" do
|
76
61
|
|
77
|
-
|
78
|
-
|
79
|
-
|
62
|
+
it "with leading slash directory index request" do
|
63
|
+
expect(server.find_by_path("/section-two")[:meta][:title_tag]).to eq "Subsection 2 Index | My Website"
|
64
|
+
end
|
80
65
|
|
81
|
-
|
82
|
-
|
83
|
-
|
66
|
+
it "with trailing slash directory index request" do
|
67
|
+
expect(server.find_by_path("section-two/")[:meta][:title_tag]).to eq "Subsection 2 Index | My Website"
|
68
|
+
end
|
84
69
|
|
85
|
-
|
86
|
-
|
87
|
-
|
70
|
+
it "with leading and trailing slash directory index request" do
|
71
|
+
expect(server.find_by_path("/section-two/")[:meta][:title_tag]).to eq "Subsection 2 Index | My Website"
|
72
|
+
end
|
88
73
|
|
89
|
-
|
90
|
-
|
91
|
-
|
74
|
+
it "with middle only slash on a non-index subdirectory file" do
|
75
|
+
expect(server.find_by_path("section-one/sub-one-test-one")[:meta][:title_tag]).to eq "My Subsection 1 Test Page 1 | My Website"
|
76
|
+
end
|
92
77
|
|
93
|
-
|
94
|
-
|
95
|
-
|
78
|
+
it "with middle only slash on a child subdirectory request" do
|
79
|
+
expect(server.find_by_path("section-two/child-section-one")[:meta][:title_tag]).to eq "Subsection Child 1 Index | My Website"
|
80
|
+
end
|
96
81
|
|
97
|
-
|
98
|
-
end
|
99
|
-
|
100
|
-
describe "with existing content" do
|
101
|
-
|
102
|
-
before(:each) do
|
103
|
-
server.content_directory = MarkdownDatafier.root + "/spec/fixtures/content/"
|
104
|
-
end
|
105
|
-
|
106
|
-
it "should return the home page content" do
|
107
|
-
expect(server.home_page[:meta][:title_tag]).to eq "My Homepage | My Website"
|
108
|
-
end
|
109
|
-
|
110
|
-
it "should hide indexes as root directories" do
|
111
|
-
expect(server.home_page[:meta][:title_tag]).to eq "My Homepage | My Website"
|
82
|
+
end
|
112
83
|
end
|
113
84
|
|
114
|
-
|
115
|
-
expect(server.splash_page[:meta][:title_tag]).to eq "My Home Splash | My Website"
|
116
|
-
end
|
85
|
+
describe "with existing content" do
|
117
86
|
|
118
|
-
|
119
|
-
|
120
|
-
end
|
121
|
-
|
122
|
-
it "should return a populated array of indexes for the specified section's child directories" do
|
123
|
-
expect(server.indexes_for_sections("/section-two")).to have(1).items
|
124
|
-
end
|
125
|
-
|
126
|
-
it "should return an empty array for section with no child directories" do
|
127
|
-
expect(server.indexes_for_sections("section-one/")).to be_empty
|
128
|
-
end
|
129
|
-
|
130
|
-
it "should return the appropriate first index for sections in the array" do
|
131
|
-
expect(server.indexes_for_sections.first[:meta][:title_tag]).to eq "Subsection 1 Index | My Website"
|
132
|
-
end
|
133
|
-
|
134
|
-
it "should deliver index file for a root directory request" do
|
135
|
-
expect(server.find_by_path("/")[:meta][:shortname]).to eq "/"
|
136
|
-
end
|
137
|
-
|
138
|
-
it "should return a file from a section directory" do
|
139
|
-
expect(server.find_by_path("section-one/sub-one-test-one")[:meta][:nav_name]).to eq "One Deep"
|
140
|
-
end
|
141
|
-
|
142
|
-
it "should return a file from a child of section directory" do
|
143
|
-
expect(server.find_by_path("section-two/child-section-one/child-one-test-one")[:meta][:nav_name]).to eq "Two Deep"
|
144
|
-
end
|
145
|
-
|
146
|
-
describe "should deliver an index file from a subdirectory directory request" do
|
147
|
-
it "with no trailing slash" do
|
148
|
-
expect(server.find_by_path("/section-two")[:meta][:nav_name]).to eq "Subsection 2 Index"
|
149
|
-
end
|
150
|
-
|
151
|
-
it "with trailing slash" do
|
152
|
-
expect(server.find_by_path("/section-two/")[:meta][:nav_name]).to eq "Subsection 2 Index"
|
87
|
+
it "should return the home page content" do
|
88
|
+
expect(server.home_page[:meta][:title_tag]).to eq "My Homepage | My Website"
|
153
89
|
end
|
154
|
-
end
|
155
90
|
|
156
|
-
|
157
|
-
|
158
|
-
expect(server.find_by_path("/section-two/child-section-one")[:meta][:nav_name]).to eq "Subsection Child 1 Index"
|
159
|
-
end
|
160
|
-
|
161
|
-
it "with trailing slash" do
|
162
|
-
expect(server.find_by_path("/section-two/child-section-one/")[:meta][:nav_name]).to eq "Subsection Child 1 Index"
|
91
|
+
it "should hide indexes as root directories" do
|
92
|
+
expect(server.home_page[:meta][:title_tag]).to eq "My Homepage | My Website"
|
163
93
|
end
|
164
|
-
end
|
165
94
|
|
166
|
-
|
167
|
-
|
168
|
-
expect(server.find_by_path("test-one")[:meta][:shortname]).to eq "test-one"
|
95
|
+
it "should return the splash page" do
|
96
|
+
expect(server.splash_page[:meta][:title_tag]).to eq "My Home Splash | My Website"
|
169
97
|
end
|
170
|
-
|
171
|
-
it "
|
172
|
-
expect(server.
|
98
|
+
|
99
|
+
it "should return a populated array of indexes for top level sections" do
|
100
|
+
expect(server.indexes_for_sections()).to have(2).items
|
173
101
|
end
|
174
|
-
|
175
|
-
it "
|
176
|
-
expect(server.
|
102
|
+
|
103
|
+
it "should return a populated array of indexes for the specified section's child directories" do
|
104
|
+
expect(server.indexes_for_sections("/section-two")).to have(1).items
|
177
105
|
end
|
178
|
-
|
179
|
-
it "
|
180
|
-
expect(server.
|
106
|
+
|
107
|
+
it "should return an empty array for section with no child directories" do
|
108
|
+
expect(server.indexes_for_sections("section-one/")).to be_empty
|
181
109
|
end
|
182
|
-
|
183
|
-
it "
|
184
|
-
expect(server.
|
110
|
+
|
111
|
+
it "should return the appropriate first index for sections in the array" do
|
112
|
+
expect(server.indexes_for_sections.first[:meta][:title_tag]).to eq "Subsection 1 Index | My Website"
|
185
113
|
end
|
186
|
-
|
187
|
-
it "
|
188
|
-
expect(server.find_by_path("/")[:meta][:
|
114
|
+
|
115
|
+
it "should deliver index file for a root directory request" do
|
116
|
+
expect(server.find_by_path("/")[:meta][:shortname]).to eq "/"
|
189
117
|
end
|
190
|
-
|
191
|
-
it "
|
192
|
-
expect(server.find_by_path("test-one")[:meta][:nav_name]).to eq "
|
118
|
+
|
119
|
+
it "should return a file from a section directory" do
|
120
|
+
expect(server.find_by_path("section-one/sub-one-test-one")[:meta][:nav_name]).to eq "One Deep"
|
193
121
|
end
|
194
|
-
|
195
|
-
it "
|
196
|
-
expect(server.find_by_path("test-one")[:meta][:
|
122
|
+
|
123
|
+
it "should return a file from a child of section directory" do
|
124
|
+
expect(server.find_by_path("section-two/child-section-one/child-one-test-one")[:meta][:nav_name]).to eq "Two Deep"
|
197
125
|
end
|
126
|
+
|
127
|
+
describe "should deliver an index file from a subdirectory directory request" do
|
128
|
+
|
129
|
+
it "with no trailing slash" do
|
130
|
+
expect(server.find_by_path("/section-two")[:meta][:nav_name]).to eq "Subsection 2 Index"
|
131
|
+
end
|
198
132
|
|
199
|
-
|
200
|
-
|
133
|
+
it "with trailing slash" do
|
134
|
+
expect(server.find_by_path("/section-two/")[:meta][:nav_name]).to eq "Subsection 2 Index"
|
135
|
+
end
|
136
|
+
|
201
137
|
end
|
138
|
+
|
139
|
+
describe "should deliver an index file from a child directory directory request" do
|
140
|
+
|
141
|
+
it "with no trailing slash" do
|
142
|
+
expect(server.find_by_path("/section-two/child-section-one")[:meta][:nav_name]).to eq "Subsection Child 1 Index"
|
143
|
+
end
|
202
144
|
|
203
|
-
|
204
|
-
|
145
|
+
it "with trailing slash" do
|
146
|
+
expect(server.find_by_path("/section-two/child-section-one/")[:meta][:nav_name]).to eq "Subsection Child 1 Index"
|
147
|
+
end
|
148
|
+
|
205
149
|
end
|
206
|
-
|
207
|
-
|
208
|
-
|
150
|
+
|
151
|
+
describe "should return the correct" do
|
152
|
+
|
153
|
+
it "shortname" do
|
154
|
+
expect(server.find_by_path("test-one")[:meta][:shortname]).to eq "test-one"
|
155
|
+
end
|
156
|
+
|
157
|
+
it "title_tag" do
|
158
|
+
expect(server.find_by_path("test-one")[:meta][:title_tag]).to eq "My Test Page 1 | My Website"
|
159
|
+
end
|
160
|
+
|
161
|
+
it "description" do
|
162
|
+
expect(server.find_by_path("test-one")[:meta][:description]).to eq "This is a description meta for test page 1."
|
163
|
+
end
|
164
|
+
|
165
|
+
it "keywords" do
|
166
|
+
expect(server.find_by_path("test-one")[:meta][:keywords]).to eq "rspec, testing, markdown"
|
167
|
+
end
|
168
|
+
|
169
|
+
it "publish_date in UTC ISO 8601 format" do
|
170
|
+
expect(server.find_by_path("test-one")[:meta][:publish_datetime]).to eq "2010-07-23T05:00:00Z"
|
171
|
+
end
|
172
|
+
|
173
|
+
it "nav_name when supplied" do
|
174
|
+
expect(server.find_by_path("/")[:meta][:nav_name]).to eq "Home"
|
175
|
+
end
|
176
|
+
|
177
|
+
it "nav_name when not supplied" do
|
178
|
+
expect(server.find_by_path("test-one")[:meta][:nav_name]).to eq "Test Page 1"
|
179
|
+
end
|
180
|
+
|
181
|
+
it "summary" do
|
182
|
+
expect(server.find_by_path("test-one")[:meta][:summary]).to eq "This is a summary text for test page 1."
|
183
|
+
end
|
184
|
+
|
185
|
+
it "large_image" do
|
186
|
+
expect(server.find_by_path("test-one")[:meta][:large_image]).to eq "http://mysite.com/images/test-one-500x500.png"
|
187
|
+
end
|
188
|
+
|
189
|
+
it "medium_image" do
|
190
|
+
expect(server.find_by_path("test-one")[:meta][:medium_image]).to eq "http://mysite.com/images/test-one-200x200.png"
|
191
|
+
end
|
192
|
+
|
193
|
+
it "small_image" do
|
194
|
+
expect(server.find_by_path("test-one")[:meta][:small_image]).to eq "http://mysite.com/images/test-one-75x75.png"
|
195
|
+
end
|
196
|
+
|
197
|
+
it "position of nil" do
|
198
|
+
expect(server.find_by_path("test-one")[:meta][:position]).to be_nil
|
199
|
+
end
|
200
|
+
|
201
|
+
it "position of 2" do
|
202
|
+
expect(server.find_by_path("test-two")[:meta][:position]).to eq "2"
|
203
|
+
end
|
204
|
+
|
205
|
+
it "body in html format" do
|
206
|
+
expect(server.find_by_path("test-one")[:body]).to include("<h1>Test Page 1</h1>")
|
207
|
+
end
|
208
|
+
|
209
209
|
end
|
210
|
-
|
211
|
-
|
212
|
-
|
210
|
+
end
|
211
|
+
|
212
|
+
describe "with no matching content" do
|
213
|
+
let(:empty_server) { TestEmptyServer.new(content_path: MarkdownDatafier.root + "/spec/fixtures/empty/") }
|
214
|
+
|
215
|
+
it "should return nil for find_by_path" do
|
216
|
+
expect(empty_server.find_by_path("ragamuffin")).to be_nil
|
213
217
|
end
|
214
|
-
|
215
|
-
it "
|
216
|
-
expect(
|
218
|
+
|
219
|
+
it "should return nil for home page" do
|
220
|
+
expect(empty_server.home_page).to be_nil
|
217
221
|
end
|
218
|
-
|
219
|
-
it "
|
220
|
-
expect(
|
222
|
+
|
223
|
+
it "should return nil for splash page" do
|
224
|
+
expect(empty_server.splash_page).to be_nil
|
221
225
|
end
|
222
|
-
|
223
|
-
end
|
224
|
-
end
|
225
|
-
describe "with no matching content" do
|
226
226
|
|
227
|
-
before(:each) do
|
228
|
-
server.content_directory = MarkdownDatafier.root + "/spec/fixtures/empty/"
|
229
227
|
end
|
228
|
+
|
229
|
+
end
|
230
|
+
|
231
|
+
describe "when collecting content instances for the default content path" do
|
230
232
|
|
231
|
-
|
232
|
-
expect(server.find_by_path("ragamuffin")).to be_nil
|
233
|
-
end
|
233
|
+
let(:instance_server) { TestInstanceServer.new(content_path: MarkdownDatafier.root + "/spec/fixtures/instances/") }
|
234
234
|
|
235
|
-
it "should
|
236
|
-
expect(
|
235
|
+
it "should collect 3 instances of people" do
|
236
|
+
expect(instance_server.collect).to have(3).items
|
237
237
|
end
|
238
238
|
|
239
|
-
it "should
|
240
|
-
expect(
|
239
|
+
it "should collect 2 instances of articles when supplied a sub directory path under the :content_path" do
|
240
|
+
expect(instance_server.collect("instance-sub-dir")).to have(2).items
|
241
241
|
end
|
242
242
|
|
243
243
|
end
|
244
|
-
|
245
244
|
|
246
245
|
describe ".root" do
|
246
|
+
|
247
247
|
it "should return the gem's root directory" do
|
248
248
|
expect(File.basename(MarkdownDatafier.root)).to eq "markdown_datafier"
|
249
249
|
end
|
250
|
+
|
250
251
|
end
|
252
|
+
|
251
253
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -4,6 +4,14 @@ class TestServer
|
|
4
4
|
include MarkdownDatafier
|
5
5
|
end
|
6
6
|
|
7
|
+
class TestEmptyServer
|
8
|
+
include MarkdownDatafier
|
9
|
+
end
|
10
|
+
|
11
|
+
class TestInstanceServer
|
12
|
+
include MarkdownDatafier
|
13
|
+
end
|
14
|
+
|
7
15
|
RSpec.configure do |config|
|
8
16
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
9
17
|
config.run_all_when_everything_filtered = true
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: markdown_datafier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- J. Ryan Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redcarpet
|
@@ -82,16 +82,21 @@ files:
|
|
82
82
|
- lib/markdown_datafier.rb
|
83
83
|
- lib/markdown_datafier/version.rb
|
84
84
|
- markdown_datafier.gemspec
|
85
|
-
- spec/fixtures/
|
86
|
-
- spec/fixtures/
|
87
|
-
- spec/fixtures/
|
88
|
-
- spec/fixtures/
|
89
|
-
- spec/fixtures/
|
90
|
-
- spec/fixtures/
|
91
|
-
- spec/fixtures/
|
92
|
-
- spec/fixtures/
|
93
|
-
- spec/fixtures/
|
94
|
-
- spec/fixtures/
|
85
|
+
- spec/fixtures/instances/bob.mdown
|
86
|
+
- spec/fixtures/instances/doug.mdown
|
87
|
+
- spec/fixtures/instances/instance-sub-dir/article-one.mdown
|
88
|
+
- spec/fixtures/instances/instance-sub-dir/article-two.mdown
|
89
|
+
- spec/fixtures/instances/satan.mdown
|
90
|
+
- spec/fixtures/server_content/index.mdown
|
91
|
+
- spec/fixtures/server_content/section-one/index.mdown
|
92
|
+
- spec/fixtures/server_content/section-one/sub-one-test-one.mdown
|
93
|
+
- spec/fixtures/server_content/section-two/child-section-one/child-one-test-one.mdown
|
94
|
+
- spec/fixtures/server_content/section-two/child-section-one/index.mdown
|
95
|
+
- spec/fixtures/server_content/section-two/index.mdown
|
96
|
+
- spec/fixtures/server_content/section-two/sub-two-test-one.mdown
|
97
|
+
- spec/fixtures/server_content/splash.mdown
|
98
|
+
- spec/fixtures/server_content/test-one.mdown
|
99
|
+
- spec/fixtures/server_content/test-two.mdown
|
95
100
|
- spec/markdown_datafier_spec.rb
|
96
101
|
- spec/spec_helper.rb
|
97
102
|
homepage: https://github.com/etherdev/markdown_datafier
|
@@ -120,15 +125,20 @@ specification_version: 4
|
|
120
125
|
summary: Reads a structure of Markdown files parses their metadata and outputs to
|
121
126
|
a ruby hash or array of hashes. Easy to plug into your own API endpoints.
|
122
127
|
test_files:
|
123
|
-
- spec/fixtures/
|
124
|
-
- spec/fixtures/
|
125
|
-
- spec/fixtures/
|
126
|
-
- spec/fixtures/
|
127
|
-
- spec/fixtures/
|
128
|
-
- spec/fixtures/
|
129
|
-
- spec/fixtures/
|
130
|
-
- spec/fixtures/
|
131
|
-
- spec/fixtures/
|
132
|
-
- spec/fixtures/
|
128
|
+
- spec/fixtures/instances/bob.mdown
|
129
|
+
- spec/fixtures/instances/doug.mdown
|
130
|
+
- spec/fixtures/instances/instance-sub-dir/article-one.mdown
|
131
|
+
- spec/fixtures/instances/instance-sub-dir/article-two.mdown
|
132
|
+
- spec/fixtures/instances/satan.mdown
|
133
|
+
- spec/fixtures/server_content/index.mdown
|
134
|
+
- spec/fixtures/server_content/section-one/index.mdown
|
135
|
+
- spec/fixtures/server_content/section-one/sub-one-test-one.mdown
|
136
|
+
- spec/fixtures/server_content/section-two/child-section-one/child-one-test-one.mdown
|
137
|
+
- spec/fixtures/server_content/section-two/child-section-one/index.mdown
|
138
|
+
- spec/fixtures/server_content/section-two/index.mdown
|
139
|
+
- spec/fixtures/server_content/section-two/sub-two-test-one.mdown
|
140
|
+
- spec/fixtures/server_content/splash.mdown
|
141
|
+
- spec/fixtures/server_content/test-one.mdown
|
142
|
+
- spec/fixtures/server_content/test-two.mdown
|
133
143
|
- spec/markdown_datafier_spec.rb
|
134
144
|
- spec/spec_helper.rb
|