From 6eea8ca81061eead9a31f7df3308665c7b742dcd Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Thu, 21 Apr 2016 11:56:30 +0100 Subject: [PATCH] Initial commit --- README.md | 5 ++++ administrate-field-markdown.gemspec | 22 +++++++++++++++ app/views/fields/markdown/_form.html.erb | 6 +++++ app/views/fields/markdown/_index.html.erb | 1 + app/views/fields/markdown/_show.html.erb | 1 + lib/administrate/field/markdown.rb | 28 ++++++++++++++++++++ spec/lib/administrate/field/markdown_spec.rb | 25 +++++++++++++++++ 7 files changed, 88 insertions(+) create mode 100644 README.md create mode 100644 administrate-field-markdown.gemspec create mode 100644 app/views/fields/markdown/_form.html.erb create mode 100644 app/views/fields/markdown/_index.html.erb create mode 100644 app/views/fields/markdown/_show.html.erb create mode 100644 lib/administrate/field/markdown.rb create mode 100644 spec/lib/administrate/field/markdown_spec.rb diff --git a/README.md b/README.md new file mode 100644 index 0000000..b13727e --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Administrate::Field::Color + +A plugin to handle colors in [Administrate]. + +[Administrate]: https://github.com/thoughtbot/administrate diff --git a/administrate-field-markdown.gemspec b/administrate-field-markdown.gemspec new file mode 100644 index 0000000..6b16901 --- /dev/null +++ b/administrate-field-markdown.gemspec @@ -0,0 +1,22 @@ +$:.push File.expand_path("../lib", __FILE__) + +require "administrate/field/markdown" + +Gem::Specification.new do |gem| + gem.name = "administrate-field-markdown" + gem.version = Administrate::Field::Markdown::VERSION + gem.authors = ["Dan Barber"] + gem.email = ["hello@danbarber.me"] + gem.homepage = "https://github.com/danbee/administrate_field_markdown" + gem.summary = "Markdown field plugin for Administrate" + gem.description = gem.summary + gem.license = "MIT" + + gem.require_paths = ["lib"] + gem.files = `git ls-files`.split("\n") + gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") + + gem.add_dependency "administrate", ">= 0.2.0.rc1", "< 0.3.0" + gem.add_dependency "rails", "~> 4.2" + gem.add_dependency "kramdown", "~> 1.10" +end diff --git a/app/views/fields/markdown/_form.html.erb b/app/views/fields/markdown/_form.html.erb new file mode 100644 index 0000000..f6153c0 --- /dev/null +++ b/app/views/fields/markdown/_form.html.erb @@ -0,0 +1,6 @@ +
+ <%= f.label field.attribute %> +
+
+ <%= f.text_area field.attribute %> +
diff --git a/app/views/fields/markdown/_index.html.erb b/app/views/fields/markdown/_index.html.erb new file mode 100644 index 0000000..d683ccc --- /dev/null +++ b/app/views/fields/markdown/_index.html.erb @@ -0,0 +1 @@ +<%= field.truncate %> diff --git a/app/views/fields/markdown/_show.html.erb b/app/views/fields/markdown/_show.html.erb new file mode 100644 index 0000000..5d68411 --- /dev/null +++ b/app/views/fields/markdown/_show.html.erb @@ -0,0 +1 @@ +<%= field.rendered.html_safe %> diff --git a/lib/administrate/field/markdown.rb b/lib/administrate/field/markdown.rb new file mode 100644 index 0000000..9f3ae28 --- /dev/null +++ b/lib/administrate/field/markdown.rb @@ -0,0 +1,28 @@ +require "administrate/field/base" +require "rails" +require "kramdown" + +module Administrate + module Field + class Markdown < Administrate::Field::Base + VERSION = "0.0.1" + + class Engine < ::Rails::Engine + end + + def rendered + Kramdown::Document.new(data).to_html + end + + def truncate + data.to_s[0...truncation_length] + end + + private + + def truncation_length + options.fetch(:truncate, 50) + end + end + end +end diff --git a/spec/lib/administrate/field/markdown_spec.rb b/spec/lib/administrate/field/markdown_spec.rb new file mode 100644 index 0000000..9683ddc --- /dev/null +++ b/spec/lib/administrate/field/markdown_spec.rb @@ -0,0 +1,25 @@ +require "administrate/field/markdown" + +describe Administrate::Field::Markdown do + describe "#rendered" do + it "renders markdown to HTML" do + markdown = "This is some markdown to render" + + page = :show + field = Administrate::Field::Markdown.new(:markdown, markdown, page) + + expect(field.rendered).to eq("

This is some markdown to render

\n") + end + end + + describe "#to_partial_path" do + it "returns a partial based on the page being rendered" do + page = :show + field = Administrate::Field::Markdown.new(:markdown, "", page) + + path = field.to_partial_path + + expect(path).to eq("/fields/markdown/#{page}") + end + end +end