Yeah, I'm specifically trying to avoid developers to require having
any kind of server running to view the haml.

    haml foo.haml > foo.html && open foo.html

That's close, but still doesn't solve the open in finder or refresh
problems.  Probably time to learn how to hack out a firefox extension.

On Aug 20, 5:32 pm, Rhett Sutphin <[EMAIL PROTECTED]> wrote:
> On Aug 20, 2008, at 4:23 PM, Paul Barry wrote:
>
> > Does anyone have a tool yet that allows you to double click on a haml
> > file and see it's render HTML content in a browser?  And for bonus
> > points be able to edit the file, press refresh in the browser and see
> > the updated HTML?
>
> Almost.  There was a thread just a few days ago about viewing haml
> directly in Apache:
>
> http://groups.google.com/group/haml/browse_thread/thread/3a1d93760f33...
>
> I use a ruby script that uses Webrick to serve all the haml and sass
> files in a directory.  It's based on one by John Long I found at
> Wiseheart Design (inline below).
>
> Neither of these allow you to double click on the file to open it (you
> have to know the URL to use, either served from Apache or Webrick),
> but otherwise they have the properties you mention.
>
> Rhett
>
> ---- BEGIN SCRIPT -----
>
> #!/usr/bin/env ruby
>
> # Simple server that lets you automatically preview Haml outside of an
> # application.  
> Fromhttp://wiseheartdesign.com/2007/9/4/a-haml-server-for-web-designers/
>
> require 'webrick'
> require 'rubygems'
> require 'haml'
> require 'sass'
>
> class AbstractHamlHandler < WEBrick::HTTPServlet::AbstractServlet
>
>    def initialize(server, name)
>      super
>      @script_filename = name
>    end
>
>    def do_GET(req, res)
>      begin
>        data = open(@script_filename) {|io| io.read }
>        res.body = parse(data)
>        res['content-type'] = content_type
>      rescue StandardError => ex
>        raise
>      rescue Exception => ex
>        @logger.error(ex)
>        raise HTTPStatus::InternalServerError, ex.message
>      end
>    end
>
>    alias do_POST do_GET
>
>    private
>
>    def parse(string)
>      engine = engine_class.new(string,
>        :attr_wrapper => '"',
>        :filename => @script_filename
>      )
>      engine.render
>    end
> end
>
> class HamlHandler < AbstractHamlHandler
>    def content_type
>      'text/html'
>    end
>
>    def engine_class
>      Haml::Engine
>    end
> end
>
> class SassHandler < AbstractHamlHandler
>    def content_type
>      'text/css'
>    end
>
>    def engine_class
>      Sass::Engine
>    end
> end
>
> WEBrick::HTTPServlet::FileHandler.add_handler("haml", HamlHandler)
> WEBrick::HTTPServlet::FileHandler.add_handler("sass", SassHandler)
>
> args = ARGV.join(' ')
> args.gsub!(%r{^http://}, '')
> args = args.split(/[ :]/).compact
>
> server = WEBrick::HTTPServer.new(
>    :Port => args.pop || 3000,
>    :BindAddress => args.pop || '0.0.0.0',
>    :DocumentRoot => Dir.pwd
> )
>
> trap("INT") { server.shutdown }
>
> server.start
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Haml" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/haml?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to