From 8de3d2b35dc543abd04e3f91bd487a477df0df73 Mon Sep 17 00:00:00 2001 From: Thomas Reynolds Date: Sat, 20 Aug 2011 16:38:45 -0700 Subject: [PATCH] abstract data api so extensions can use it --- lib/middleman/core_extensions/data.rb | 34 +++++++++++---------------- lib/middleman/version.rb | 2 +- middleman.gemspec | 1 - 3 files changed, 15 insertions(+), 22 deletions(-) diff --git a/lib/middleman/core_extensions/data.rb b/lib/middleman/core_extensions/data.rb index 84e3c3dc..d6d3f3d4 100755 --- a/lib/middleman/core_extensions/data.rb +++ b/lib/middleman/core_extensions/data.rb @@ -1,5 +1,4 @@ require "yaml" -require "httparty" require "thor" module Middleman::CoreExtensions::Data @@ -27,12 +26,12 @@ module Middleman::CoreExtensions::Data response = nil @@local_sources ||= {} - @@remote_sources ||= {} + @@callback_sources ||= {} if @@local_sources.has_key?(path.to_s) response = @@local_sources[path.to_s] - elsif @@remote_sources.has_key?(path.to_s) - response = HTTParty.get(@@remote_sources[path.to_s]).parsed_response + elsif @@callback_sources.has_key?(path.to_s) + response = @@callback_sources[path.to_s].call() else file_path = File.join(@app.class.root, @app.class.data_dir, "#{path}.yml") if File.exists? file_path @@ -44,16 +43,16 @@ module Middleman::CoreExtensions::Data recursively_enhance(response) end end - - def self.add_source(name, json_url) - @@remote_sources ||= {} - @@remote_sources[name.to_s] = json_url - end def self.data_content(name, content) @@local_sources ||= {} @@local_sources[name.to_s] = content end + + def self.data_callback(name, proc) + @@callback_sources ||= {} + @@callback_sources[name.to_s] = proc + end private def recursively_enhance(data) @@ -75,19 +74,14 @@ module Middleman::CoreExtensions::Data end module ClassMethods - # Makes HTTP json data available in the data object - # - # data_source :my_json, "http://my/file.json" - # - # Available in templates as: - # - # data.my_json - def data_source(name, url) - DataObject.add_source(name, url) - end - + # Makes a hash available on the data var with a given name def data_content(name, content) DataObject.data_content(name, content) end + + # Makes a hash available on the data var with a given name + def data_callback(name, &block) + DataObject.data_callback(name, block) + end end end \ No newline at end of file diff --git a/lib/middleman/version.rb b/lib/middleman/version.rb index 906deba2..845d8167 100644 --- a/lib/middleman/version.rb +++ b/lib/middleman/version.rb @@ -1,3 +1,3 @@ module Middleman - VERSION = "2.0.3" + VERSION = "2.0.4" end diff --git a/middleman.gemspec b/middleman.gemspec index 48590124..2d63e1c3 100644 --- a/middleman.gemspec +++ b/middleman.gemspec @@ -53,7 +53,6 @@ eos s.add_runtime_dependency("compass", ["~> 0.11.3"]) s.add_runtime_dependency("coffee-script", ["~> 2.2.0"]) s.add_runtime_dependency("sprockets", ["2.0.0.beta.14"]) - s.add_runtime_dependency("httparty", ["~> 0.7.8"]) case Config::CONFIG['host_os'].downcase when %r{mswin|mingw}