app_config 0.7.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,114 +0,0 @@
1
- /**
2
- *
3
- * JQuery QuickSearch - Hook up a form field to hide non-matching elements.
4
- * $Id: quicksearch.js 53 2009-01-07 02:52:03Z deveiant $
5
- *
6
- * Author: Michael Granger <mgranger@laika.com>
7
- *
8
- */
9
- jQuery.fn.quicksearch = function( target, searchElems, options ) {
10
- // console.debug( "Quicksearch fn" );
11
-
12
- var settings = {
13
- delay: 250,
14
- clearButton: false,
15
- highlightMatches: false,
16
- focusOnLoad: false,
17
- noSearchResultsIndicator: null
18
- };
19
- if ( options ) $.extend( settings, options );
20
-
21
- return jQuery(this).each( function() {
22
- // console.debug( "Creating a new quicksearch on %o for %o", this, searchElems );
23
- new jQuery.quicksearch( this, searchElems, settings );
24
- });
25
- };
26
-
27
-
28
- jQuery.quicksearch = function( searchBox, searchElems, settings ) {
29
- var timeout;
30
- var boxdiv = $(searchBox).parents('div').eq(0);
31
-
32
- function init() {
33
- setupKeyEventHandlers();
34
- focusOnLoad();
35
- };
36
-
37
- function setupKeyEventHandlers() {
38
- // console.debug( "Hooking up the 'keypress' event to %o", searchBox );
39
- $(searchBox).
40
- unbind( 'keyup' ).
41
- keyup( function(e) { return onSearchKey( e.keyCode ); });
42
- $(searchBox).
43
- unbind( 'keypress' ).
44
- keypress( function(e) {
45
- switch( e.which ) {
46
- // Execute the search on Enter, Tab, or Newline
47
- case 9:
48
- case 13:
49
- case 10:
50
- clearTimeout( timeout );
51
- e.preventDefault();
52
- doQuickSearch();
53
- break;
54
-
55
- // Allow backspace
56
- case 8:
57
- return true;
58
- break;
59
-
60
- // Only allow valid search characters
61
- default:
62
- return validQSChar( e.charCode );
63
- }
64
- });
65
- };
66
-
67
- function focusOnLoad() {
68
- if ( !settings.focusOnLoad ) return false;
69
- $(searchBox).focus();
70
- };
71
-
72
- function onSearchKey ( code ) {
73
- clearTimeout( timeout );
74
- // console.debug( "...scheduling search." );
75
- timeout = setTimeout( doQuickSearch, settings.delay );
76
- };
77
-
78
- function validQSChar( code ) {
79
- var c = String.fromCharCode( code );
80
- return (
81
- (c == ':') ||
82
- (c >= 'a' && c <= 'z') ||
83
- (c >= 'A' && c <= 'Z')
84
- );
85
- };
86
-
87
- function doQuickSearch() {
88
- var searchText = searchBox.value;
89
- var pat = new RegExp( searchText, "im" );
90
- var shownCount = 0;
91
-
92
- if ( settings.noSearchResultsIndicator ) {
93
- $('#' + settings.noSearchResultsIndicator).hide();
94
- }
95
-
96
- // All elements start out hidden
97
- $(searchElems).each( function(index) {
98
- var str = $(this).text();
99
-
100
- if ( pat.test(str) ) {
101
- shownCount += 1;
102
- $(this).fadeIn();
103
- } else {
104
- $(this).hide();
105
- }
106
- });
107
-
108
- if ( shownCount == 0 && settings.noSearchResultsIndicator ) {
109
- $('#' + settings.noSearchResultsIndicator).slideDown();
110
- }
111
- };
112
-
113
- init();
114
- };
@@ -1,10 +0,0 @@
1
- /*
2
- * Thickbox 3 - One Box To Rule Them All.
3
- * By Cody Lindley (http://www.codylindley.com)
4
- * Copyright (c) 2007 cody lindley
5
- * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
6
- */
7
-
8
- var tb_pathToImage = "../images/loadingAnimation.gif";
9
-
10
- eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('$(o).2S(9(){1u(\'a.18, 3n.18, 3i.18\');1w=1p 1t();1w.L=2H});9 1u(b){$(b).s(9(){6 t=X.Q||X.1v||M;6 a=X.u||X.23;6 g=X.1N||P;19(t,a,g);X.2E();H P})}9 19(d,f,g){3m{3(2t o.v.J.2i==="2g"){$("v","11").r({A:"28%",z:"28%"});$("11").r("22","2Z");3(o.1Y("1F")===M){$("v").q("<U 5=\'1F\'></U><4 5=\'B\'></4><4 5=\'8\'></4>");$("#B").s(G)}}n{3(o.1Y("B")===M){$("v").q("<4 5=\'B\'></4><4 5=\'8\'></4>");$("#B").s(G)}}3(1K()){$("#B").1J("2B")}n{$("#B").1J("2z")}3(d===M){d=""}$("v").q("<4 5=\'K\'><1I L=\'"+1w.L+"\' /></4>");$(\'#K\').2y();6 h;3(f.O("?")!==-1){h=f.3l(0,f.O("?"))}n{h=f}6 i=/\\.2s$|\\.2q$|\\.2m$|\\.2l$|\\.2k$/;6 j=h.1C().2h(i);3(j==\'.2s\'||j==\'.2q\'||j==\'.2m\'||j==\'.2l\'||j==\'.2k\'){1D="";1G="";14="";1z="";1x="";R="";1n="";1r=P;3(g){E=$("a[@1N="+g+"]").36();25(D=0;((D<E.1c)&&(R===""));D++){6 k=E[D].u.1C().2h(i);3(!(E[D].u==f)){3(1r){1z=E[D].Q;1x=E[D].u;R="<1e 5=\'1X\'>&1d;&1d;<a u=\'#\'>2T &2R;</a></1e>"}n{1D=E[D].Q;1G=E[D].u;14="<1e 5=\'1U\'>&1d;&1d;<a u=\'#\'>&2O; 2N</a></1e>"}}n{1r=1b;1n="1t "+(D+1)+" 2L "+(E.1c)}}}S=1p 1t();S.1g=9(){S.1g=M;6 a=2x();6 x=a[0]-1M;6 y=a[1]-1M;6 b=S.z;6 c=S.A;3(b>x){c=c*(x/b);b=x;3(c>y){b=b*(y/c);c=y}}n 3(c>y){b=b*(y/c);c=y;3(b>x){c=c*(x/b);b=x}}13=b+30;1a=c+2G;$("#8").q("<a u=\'\' 5=\'1L\' Q=\'1o\'><1I 5=\'2F\' L=\'"+f+"\' z=\'"+b+"\' A=\'"+c+"\' 23=\'"+d+"\'/></a>"+"<4 5=\'2D\'>"+d+"<4 5=\'2C\'>"+1n+14+R+"</4></4><4 5=\'2A\'><a u=\'#\' 5=\'Z\' Q=\'1o\'>1l</a> 1k 1j 1s</4>");$("#Z").s(G);3(!(14==="")){9 12(){3($(o).N("s",12)){$(o).N("s",12)}$("#8").C();$("v").q("<4 5=\'8\'></4>");19(1D,1G,g);H P}$("#1U").s(12)}3(!(R==="")){9 1i(){$("#8").C();$("v").q("<4 5=\'8\'></4>");19(1z,1x,g);H P}$("#1X").s(1i)}o.1h=9(e){3(e==M){I=2w.2v}n{I=e.2u}3(I==27){G()}n 3(I==3k){3(!(R=="")){o.1h="";1i()}}n 3(I==3j){3(!(14=="")){o.1h="";12()}}};16();$("#K").C();$("#1L").s(G);$("#8").r({Y:"T"})};S.L=f}n{6 l=f.2r(/^[^\\?]+\\??/,\'\');6 m=2p(l);13=(m[\'z\']*1)+30||3h;1a=(m[\'A\']*1)+3g||3f;W=13-30;V=1a-3e;3(f.O(\'2j\')!=-1){1E=f.1B(\'3d\');$("#15").C();3(m[\'1A\']!="1b"){$("#8").q("<4 5=\'2f\'><4 5=\'1H\'>"+d+"</4><4 5=\'2e\'><a u=\'#\' 5=\'Z\' Q=\'1o\'>1l</a> 1k 1j 1s</4></4><U 1W=\'0\' 2d=\'0\' L=\'"+1E[0]+"\' 5=\'15\' 1v=\'15"+1f.2c(1f.1y()*2b)+"\' 1g=\'1m()\' J=\'z:"+(W+29)+"p;A:"+(V+17)+"p;\' > </U>")}n{$("#B").N();$("#8").q("<U 1W=\'0\' 2d=\'0\' L=\'"+1E[0]+"\' 5=\'15\' 1v=\'15"+1f.2c(1f.1y()*2b)+"\' 1g=\'1m()\' J=\'z:"+(W+29)+"p;A:"+(V+17)+"p;\'> </U>")}}n{3($("#8").r("Y")!="T"){3(m[\'1A\']!="1b"){$("#8").q("<4 5=\'2f\'><4 5=\'1H\'>"+d+"</4><4 5=\'2e\'><a u=\'#\' 5=\'Z\'>1l</a> 1k 1j 1s</4></4><4 5=\'F\' J=\'z:"+W+"p;A:"+V+"p\'></4>")}n{$("#B").N();$("#8").q("<4 5=\'F\' 3c=\'3b\' J=\'z:"+W+"p;A:"+V+"p;\'></4>")}}n{$("#F")[0].J.z=W+"p";$("#F")[0].J.A=V+"p";$("#F")[0].3a=0;$("#1H").11(d)}}$("#Z").s(G);3(f.O(\'37\')!=-1){$("#F").q($(\'#\'+m[\'26\']).1T());$("#8").24(9(){$(\'#\'+m[\'26\']).q($("#F").1T())});16();$("#K").C();$("#8").r({Y:"T"})}n 3(f.O(\'2j\')!=-1){16();3($.1q.35){$("#K").C();$("#8").r({Y:"T"})}}n{$("#F").34(f+="&1y="+(1p 33().32()),9(){16();$("#K").C();1u("#F a.18");$("#8").r({Y:"T"})})}}3(!m[\'1A\']){o.21=9(e){3(e==M){I=2w.2v}n{I=e.2u}3(I==27){G()}}}}31(e){}}9 1m(){$("#K").C();$("#8").r({Y:"T"})}9 G(){$("#2Y").N("s");$("#Z").N("s");$("#8").2X("2W",9(){$(\'#8,#B,#1F\').2V("24").N().C()});$("#K").C();3(2t o.v.J.2i=="2g"){$("v","11").r({A:"1Z",z:"1Z"});$("11").r("22","")}o.1h="";o.21="";H P}9 16(){$("#8").r({2U:\'-\'+20((13/2),10)+\'p\',z:13+\'p\'});3(!(1V.1q.2Q&&1V.1q.2P<7)){$("#8").r({38:\'-\'+20((1a/2),10)+\'p\'})}}9 2p(a){6 b={};3(!a){H b}6 c=a.1B(/[;&]/);25(6 i=0;i<c.1c;i++){6 d=c[i].1B(\'=\');3(!d||d.1c!=2){39}6 e=2a(d[0]);6 f=2a(d[1]);f=f.2r(/\\+/g,\' \');b[e]=f}H b}9 2x(){6 a=o.2M;6 w=1S.2o||1R.2o||(a&&a.1Q)||o.v.1Q;6 h=1S.1P||1R.1P||(a&&a.2n)||o.v.2n;1O=[w,h];H 1O}9 1K(){6 a=2K.2J.1C();3(a.O(\'2I\')!=-1&&a.O(\'3o\')!=-1){H 1b}}',62,211,'|||if|div|id|var||TB_window|function||||||||||||||else|document|px|append|css|click||href|body||||width|height|TB_overlay|remove|TB_Counter|TB_TempArray|TB_ajaxContent|tb_remove|return|keycode|style|TB_load|src|null|unbind|indexOf|false|title|TB_NextHTML|imgPreloader|block|iframe|ajaxContentH|ajaxContentW|this|display|TB_closeWindowButton||html|goPrev|TB_WIDTH|TB_PrevHTML|TB_iframeContent|tb_position||thickbox|tb_show|TB_HEIGHT|true|length|nbsp|span|Math|onload|onkeydown|goNext|Esc|or|close|tb_showIframe|TB_imageCount|Close|new|browser|TB_FoundURL|Key|Image|tb_init|name|imgLoader|TB_NextURL|random|TB_NextCaption|modal|split|toLowerCase|TB_PrevCaption|urlNoQuery|TB_HideSelect|TB_PrevURL|TB_ajaxWindowTitle|img|addClass|tb_detectMacXFF|TB_ImageOff|150|rel|arrayPageSize|innerHeight|clientWidth|self|window|children|TB_prev|jQuery|frameborder|TB_next|getElementById|auto|parseInt|onkeyup|overflow|alt|unload|for|inlineId||100||unescape|1000|round|hspace|TB_closeAjaxWindow|TB_title|undefined|match|maxHeight|TB_iframe|bmp|gif|png|clientHeight|innerWidth|tb_parseQuery|jpeg|replace|jpg|typeof|which|keyCode|event|tb_getPageSize|show|TB_overlayBG|TB_closeWindow|TB_overlayMacFFBGHack|TB_secondLine|TB_caption|blur|TB_Image|60|tb_pathToImage|mac|userAgent|navigator|of|documentElement|Prev|lt|version|msie|gt|ready|Next|marginLeft|trigger|fast|fadeOut|TB_imageOff|hidden||catch|getTime|Date|load|safari|get|TB_inline|marginTop|continue|scrollTop|TB_modal|class|TB_|45|440|40|630|input|188|190|substr|try|area|firefox'.split('|'),0,{}))
@@ -1,62 +0,0 @@
1
- module AppConfig
2
- module Storage
3
-
4
- begin
5
- require 'sqlite3'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'sqlite3'
9
- end
10
-
11
- # SQLite3 storage method.
12
- class Sqlite < Storage::Base
13
-
14
- DEFAULTS = {
15
- :database => File.expand_path(File.join(ENV['HOME'], '.app_config.sqlite3')),
16
- :table => 'app_config'
17
- }
18
-
19
- # Loads @data with the SQLite3 database located at +path+.
20
- # @data will be the Hashish that is accessed like AppConfig[:key].
21
- #
22
- # Defaults to $HOME/.app_config.sqlite3
23
- def initialize(options)
24
- super(DEFAULTS.merge(options))
25
- @db = SQLite3::Database.open(@options[:database])
26
- @data = load_from_database
27
- end
28
-
29
- private
30
-
31
- # Returns a Hashish that looks something like {:column => value}.
32
- # TODO: This could use a bit of work.
33
- def load_from_database
34
- query = ["SELECT * FROM sqlite_master",
35
- "WHERE type == 'table' AND name == '#{@options[:table]}'",
36
- "AND name != 'sqlite_sequence'"].join(' ')
37
- table = @db.get_first_row(query).last
38
- values(columns(table))
39
- end
40
-
41
- # Return the values for a given +columns+ (as a Hashish).
42
- def values(columns)
43
- data = Hashish.new
44
- query = "SELECT #{columns.join(', ')} FROM #{@options[:table]}"
45
- @db.get_first_row(query).each_with_index do |value, index|
46
- data[columns[index]] = value
47
- end
48
- data
49
- end
50
-
51
- # Return the column names of a given +table+ (as an Array).
52
- def columns(table)
53
- columns = table.split(', ')
54
- # Trip the first element, since it's the SQL CREATE statement.
55
- columns = columns[1, columns.size]
56
- # Yes, Ruby is 'elegant', but this is fucking disgusting. There *must* be a better way.
57
- columns.map! {|c| c.split('"').reject {|e| e.empty? }.reject {|e| e.include? '('}}.flatten!
58
- end
59
-
60
- end # Sqlite
61
- end # Storage
62
- end # AppConfig
data/spec/watchr.rb DELETED
@@ -1,28 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- def run_specs
4
- system('rake spec')
5
- end
6
-
7
- # Ctrl-\
8
- Signal.trap('QUIT') do
9
- puts "\n--- Running all specs ---\n"
10
- run_specs
11
- end
12
-
13
- # Ctrl-C
14
- Signal.trap('INT') { abort("\n") }
15
-
16
-
17
- if __FILE__ == $0
18
- system("watchr #{$0}")
19
- else
20
- run_specs
21
-
22
- [
23
- 'lib/(.*/)?.*\.rb',
24
- 'spec/(.*/)?.*_spec\.rb'
25
- ].each do |pattern|
26
- watch(pattern) { |md| run_specs }
27
- end
28
- end