Skip to content

Movable Type import / export format parser and builder for Ruby.

License

Notifications You must be signed in to change notification settings

labocho/movable_type_format

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7ab8a49 · Mar 16, 2017

History

31 Commits
Nov 9, 2016
Nov 10, 2016
Nov 10, 2016
Mar 16, 2017
Mar 16, 2017
Feb 24, 2012
Nov 9, 2016
Nov 9, 2016
Mar 9, 2017
Mar 16, 2017
Nov 9, 2016
Nov 10, 2016
Nov 9, 2016
Mar 15, 2017
Nov 9, 2016
Nov 9, 2016

Repository files navigation

movable_type_format

Build Status

Movable Type import / export format parser and builder for Ruby.

Format documentation is below.

Installation

$ git clone https:://github.com/labocho/movable_type_format.git
$ cd movable_type_format
$ bundle install
$ bundle exec rake install

mt2json

mt2json command parse MovableType import /export format and format to JSON.

$ cat exported.txt | mt2json
[
  {
    "author": "Foo Bar",
    "basename": "a-dummy-title",
    "body": "This is the body.\n\nAnother paragraph here.\n\nAnother paragraph here.",
    "categories": [
      "News"
    ],
    "comments": [
      {
        "author": "Foo",
...

# You can specify file instead of stdin.
$ mt2json exported.txt

# -h / --help option prints help
$ mt2json -h

# -c / --compact-output option outputs in a single line.
$ mt2json -c exported.txt

Usage of library

Parse

First, load gem.

require "movable_type_format"

MovableTypeFormat::Parser.parse parses String or IO, and returns Enumerator of MovableTypeFormat::Entry.

exported = File.read("exported.txt")
entries = MovableTypeFormat::Parser.parse(exported)

MovableTypeFormat::Entry has sections. Sections are collection of MovableTypeFormat::Section::Base (or its descendant).

entry = entries.to_a[0]
pp entry.sections
# [#<MovableTypeFormat::Section::Metadata:0x007fc3f39b2238
#   @body=nil,
#   @fields=
#    [#<MovableTypeFormat::Field:0x007fc3f39b1f18
#      @key="TITLE",
#      @value="A dummy title">,
# ...

MovableTypeFormat::Section::Base has name, fields, and body. Field has key and value.

comment = entry.sections.find{|s| s.name == "COMMENT" }
comment.name #=> "COMMENT"
comment.fields
# [#<MovableTypeFormat::Field:0x007fc3f39a32d8 @key="AUTHOR", @value="Foo">,
#   #<MovableTypeFormat::Field:0x007fc3f39a3120
#    @key="DATE",
#    @value="01/31/2002 15:47:06">]
comment.body #=> "This is\nthe body of this comment."

Usable accessors

MovableTypeFormat::Entry has usable accessors of sections. (Some accessors access metadata section.)

# Available accessors:
#   allow_comments, allow_pings, author, basename, body,
#   category, convert_breaks, date, excerpt, extended_body,
#   keywords, no_entry, primary_category, status, tags, title
p entry.title #=> "A dummy title"
entry.title = "Updated title"

# comments, pings are collections of sections.
p entry.comments[0].title #=> "Comment title"
entry.comments = entry.comments.reject{|c| c.title["SPAM"] }

MovableTypeFormat::Section::Comment has usable accessors of fields.

# Available accessors:
#   author, date, email, url
comment = MovableTypeFormat::Section::Comment.new
comment.author = "labocho"
comment.body = "Comment body"

MovableTypeFormat::Section::Metadata has usable accessors of fields.

# Available accessors:
#   author, title, basename, status, allow_comments, allow_pings,
#   convert_breaks, primary_category, category, date, tags, no_entry
metadata = MovableTypeFormat::Section::Metadata.new
metadata.title = "Title"

MovableTypeFormat::Section::Ping has usable accessors of fields.

# Available accessors:
#   title, url, ip, blog_name, date
ping = MovableTypeFormat::Section::Ping.new
ping.title = "New ping"

Export

MovableTypeFormat::Entry#to_mt returns MovableType export format string.

entry.to_mt
# TITLE: Updated title
# AUTHOR: Foo Bar
# ...

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/movable_type_format.

License

The gem is available as open source under the terms of the MIT License.

About

Movable Type import / export format parser and builder for Ruby.

Resources

License

Stars

Watchers

Forks

Packages

No packages published