Skip to content

Commit

Permalink
Merge pull request #3 from michaeljoseph/slide-models
Browse files Browse the repository at this point in the history
Slide models
  • Loading branch information
michaeljoseph committed Oct 11, 2013
2 parents 5818db1 + 5fa0ca8 commit 13d076d
Show file tree
Hide file tree
Showing 8 changed files with 106 additions and 16 deletions.
2 changes: 2 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[run]
omit = *virtualenv*, *pypy*
22 changes: 20 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,33 @@

Snide: a remark.js parser in python

* features
* and stuff
* pure Python slightly modified Markdown slide format parser
* `---` is a slide boundary
# arbitrary `key: value` slide configuration with defaults (e.g. `transition`)
# `???` marks speaker notes

## Usage

Install `snide`:

pip install snide

Use snide in your code to parse a slide markup document:

```python
from snide import Deck, parse_deck

deck = parse_deck
```

### CLI

Minimal cli to parse and display deck statistics and meta information

snide my_slides.md
....


## Documentation

[API Documentation][http://snide.rtfd.org]
Expand Down
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
coverage < 4.0.0
docopt < 1.0.0
flake8 < 3.0.0
mock < 2.0.0
markdown2 < 3.0.0
nose < 2.0.0
pinocchio < 1.0.0
python-coveralls < 3.0.0
Expand Down
3 changes: 0 additions & 3 deletions snide/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,3 @@
__url__ = 'https://github.com/michaeljoseph/snide'
__version__ = '0.0.1'


def snide():
return 'Hello World!'
43 changes: 43 additions & 0 deletions snide/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import markdown2


class Deck(object):

def __init__(self, title, text):
self.slides = []
self.title = title
self.text = text
print(text.split('---'))
for slide in text.split('---'):
self.slides.append(Slide(slide))

def to_json(self):
return {
'title': self.title,
'slides': [slide.to_json() for slide in self.slides],
}


class Slide(object):

def __init__(self, text):
self.markdown = text
self.config = self.parse_config(text)

@property
def html(self):
return markdown2.markdown(self.markdown)

def parse_config(self, slide):
# re of lines: key:value, key=value
return {

}

def to_json(self):
return {
'text': self.markdown,
'html': self.html,
'config': self.config,
}

6 changes: 1 addition & 5 deletions tests/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,5 @@


class BaseTestCase(TestCase):
pass

def setUp(self):
pass

def tearDown(self):
pass
42 changes: 37 additions & 5 deletions tests/test_snide.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,44 @@
from . import BaseTestCase

from snide import snide
from snide.models import Deck, Slide


class TestSnide(BaseTestCase):
class TestDeck(BaseTestCase):

def test_something(self):
def setUp(self):
self.deck_text = ('# first slide'
'---'
'# second slide').strip()

self.expected_deck = Deck('foo', self.deck_text)
self.expected_deck.slides = [
Slide('# first slide'),
Slide('# second slide')
]

def test_deck(self):
self.assertEquals(
'Hello World!',
snide(),
self.expected_deck.to_json(),
Deck('foo', self.deck_text).to_json()
)


class TestSlide(BaseTestCase):

def setUp(self):
self.expected_slide = Slide('# first slide\n\n- and\n- then\n- this')

def test_slide(self):

slide_text = '# first slide\n\n- and\n- then\n- this'
self.assertEquals(
self.expected_slide.to_json(),
Slide(slide_text).to_json()
)

pass

def test_slide_render(self):
pass


2 changes: 1 addition & 1 deletion tube.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

PATTERNS = (
(r'.*\.py$', [pep8_all, pyflakes_all, nosetests_all]),
)
)

0 comments on commit 13d076d

Please sign in to comment.