Module: TextTube::Baby::EmbeddingAudio

Extended by:
Filterable
Defined in:
lib/texttube/baby/embedding_audio.rb

Overview

Embed some audio via [audio]

Constant Summary collapse

DEFAULTS =

default attributes

{
	src_base:  "/streams/",
	preload:   "metadata",
	fallback_text: "Your browser does not support HTML5, update your browser you fool!",
	controls: "controls",
}
/             # [audio[url|description]]
	\[audio\[        # opening square brackets
		([^\|]+)     # link
			\|      # separator
		([^\[]+)  # description
	\]\]        # closing square brackets
/x

Class Method Summary collapse

Class Method Details

.render_tag(link, desc, attributes) ⇒ Object

Does the grunt work of rendering the tag.

Parameters:



51
52
53
54
55
56
57
58
# File 'lib/texttube/baby/embedding_audio.rb', line 51

def self.render_tag(link,desc,attributes)
	fallback_text = attributes.delete(:fallback_text)
	src_base = attributes.delete(:src_base)
	make_inner = ->(lnk){%Q!<source src='#{src_base}#{lnk}' type='audio/#{File.extname(lnk)[1..-1]}' />!}
	inner = make_inner.( link )
	inner += make_inner.( link.sub(/m4a$/, "ogg") ) if File.extname(link) == ".m4a"
	%Q!<div class='audio'><h3>#{desc}</h3><audio #{attributes.map{|(k,v)| "#{k}='#{v}'" }.join(" ")}>#{inner}#{fallback_text}</audio></div>!.strip.gsub /\s+/, " "
end

.run(content, options = {}) ⇒ String

Parameters:

  • content (String)
  • options (Hash) (defaults to: {})

Returns:



35
36
37
38
39
40
41
42
43
# File 'lib/texttube/baby/embedding_audio.rb', line 35

def self.run(content, options={})
	options ||= {}
	attributes = DEFAULTS.merge options
		 
	content.gsub( R_link ) { |m|
		url,desc = $1,$2
		EmbeddingAudio::render_tag(url,desc,attributes)
	}
end