<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: library code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Thu, 24 Jul 2008 21:02:07 GMT</pubDate>
    <description>DZone Snippets: library code</description>
    <item>
      <title>[ruby] plugin structure</title>
      <link>http://snippets.dzone.com/posts/show/5159</link>
      <description>plugin structure sorta thing. Use inherited to concatenate all plugins to a library in a Plugins constant in said library.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;class Library&lt;br /&gt;  Plugins = []&lt;br /&gt;  &lt;br /&gt;  def initialize#(...)&lt;br /&gt;    Plugins.each do |plugin|&lt;br /&gt;      # Here you can run a certain class method or grab some data from each class&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  # ...&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;class LibraryPlugin&lt;br /&gt;  # ...&lt;br /&gt;  &lt;br /&gt;  def self.inherited(sub); Library::Plugins &lt;&lt; sub; end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;class LibraryFooer &lt; LibraryPlugin&lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;class LibraryBarer &lt; LibraryPlugin&lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Library::Plugins.inspect #=&gt; [LibraryFooer, LibraryBarer]&lt;/code&gt;</description>
      <pubDate>Thu, 21 Feb 2008 06:42:15 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5159</guid>
      <author>elliottcable (elliott cable)</author>
    </item>
    <item>
      <title>Library interface dialect</title>
      <link>http://snippets.dzone.com/posts/show/1146</link>
      <description>&lt;code&gt;&lt;br /&gt;REBOL [&lt;br /&gt;    Title:  "Library Interface Dialect"&lt;br /&gt;    File:   %lib-dialect.r&lt;br /&gt;    Author: "Gregg Irwin"&lt;br /&gt;    Purpose: {&lt;br /&gt;        Allow for a more concise way to define library routine &lt;br /&gt;        interfaces.&lt;br /&gt;    }&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;lib-dialect-ctx: context [&lt;br /&gt;;     lib-ctx: make object! [file: lib: none free: does [free lib]]&lt;br /&gt;;     lib-spec: none&lt;br /&gt;&lt;br /&gt;    lib: none&lt;br /&gt;    def-rtn-type: none&lt;br /&gt;&lt;br /&gt;    name-mods: copy []&lt;br /&gt;    mod-name: func [name] [do join name-mods name]&lt;br /&gt;&lt;br /&gt;    ; dump/trace option to show generated code?&lt;br /&gt;&lt;br /&gt;    ;has-rtn-type?: does [all [rtn-type  'none &lt;&gt; rtn-type]]&lt;br /&gt;    ; lib is a global word reference in this func.&lt;br /&gt;    make-dll-func: func [reb-name spec rtn-type name] [&lt;br /&gt;        spec: copy any [spec []]&lt;br /&gt;        if all [rtn-type  'none &lt;&gt; rtn-type] [&lt;br /&gt;            append spec compose/deep [return: [(rtn-type)]]&lt;br /&gt;        ]&lt;br /&gt;        ;print ['make-dll-func reb-name mold spec rtn-type mold  mod-name any [name  form reb-name]]&lt;br /&gt;        set reb-name make routine! spec lib  mod-name any [name  form reb-name]&lt;br /&gt;    ]&lt;br /&gt;&lt;br /&gt;    data-type: [&lt;br /&gt;        'none | 'char | 'short | 'long | 'integer! | 'string! | 'decimal!&lt;br /&gt;        ; TBD add struct support ?&lt;br /&gt;    ]&lt;br /&gt;&lt;br /&gt;    func-decl: [&lt;br /&gt;        (spec: name: none  rtn-type: def-rtn-type)&lt;br /&gt;        set reb-name word!          ;(print reb-name)&lt;br /&gt;        any [&lt;br /&gt;              [set spec block!]     ;(print mold spec)&lt;br /&gt;            | [opt ['returns | 'as] set rtn-type data-type]  ;(print rtn-type)&lt;br /&gt;            | [opt 'calls set name string!]    ;(print name)&lt;br /&gt;        ]&lt;br /&gt;        (make-dll-func reb-name spec rtn-type name)&lt;br /&gt;    ]&lt;br /&gt;&lt;br /&gt;    ; You can use this multiple times, e.g. grouping functions by return&lt;br /&gt;    ; type and using it before each group.&lt;br /&gt;    set-def-rtn-type: [&lt;br /&gt;        opt 'set ['def-rtn-type | 'default-return-type]&lt;br /&gt;        set def-rtn-type data-type&lt;br /&gt;    ]&lt;br /&gt;&lt;br /&gt;    rules: [&lt;br /&gt;        ['lib | 'library] set file file! (lib: load/library file) ;append lib-spec compose [file: (file)]&lt;br /&gt;        opt [&lt;br /&gt;            ['modify-import-names | 'mod-imports] set name-mods block!&lt;br /&gt;        ]&lt;br /&gt;        any [set-def-rtn-type | func-decl]&lt;br /&gt;    ]&lt;br /&gt;&lt;br /&gt;    set 'make-routines func [spec [any-block!]] [&lt;br /&gt;        clear name-mods&lt;br /&gt;        parse spec rules&lt;br /&gt;    ]&lt;br /&gt;&lt;br /&gt;;     set 'make-library-interface func [spec] [&lt;br /&gt;;         lib-spec: copy []&lt;br /&gt;;         clear name-mods&lt;br /&gt;;         parse spec rules&lt;br /&gt;;     ]&lt;br /&gt;&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 13 Jan 2006 04:11:40 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1146</guid>
      <author>gregg.irwin (Gregg Irwin)</author>
    </item>
    <item>
      <title>financial functions</title>
      <link>http://snippets.dzone.com/posts/show/1143</link>
      <description>&lt;code&gt;&lt;br /&gt;REBOL [&lt;br /&gt;   Title:   "Financial Library"&lt;br /&gt;   Date:    17-Apr-2002&lt;br /&gt;   Name:    'fin&lt;br /&gt;   Version: 0.0.2&lt;br /&gt;   File:    %fin.r&lt;br /&gt;   ;Home:    http://www.pointillistic.com/&lt;br /&gt;   Author:  "Gregg Irwin"&lt;br /&gt;   Email:   gregg@pointillistic.com&lt;br /&gt;   ;Owner:   "Pointillistic Software"&lt;br /&gt;   ;Rights:  "Copyright &#169; Pointillistic Software 2002. All Rights Reserved."&lt;br /&gt;   ;Tabs:    4&lt;br /&gt;   ;Need:    0.1.4&lt;br /&gt;   ;Language: 'English&lt;br /&gt;   ;Charset:  'ANSI&lt;br /&gt;   ;Category: [script 1]&lt;br /&gt;   Purpose: {Financial module for standard library.}&lt;br /&gt;&lt;br /&gt;   Comment: {Prototype stage.}&lt;br /&gt;&lt;br /&gt;   History: [&lt;br /&gt;      0.0.1 [13-Mar-2002 "First whack" "Gregg"]&lt;br /&gt;      0.0.2 [17-Apr-2002 {Added NPV and a functional, if ugly, IRR.&lt;br /&gt;      BRACKET-FN supports IRR.} "Gregg"]&lt;br /&gt;   ]&lt;br /&gt;&lt;br /&gt;   Example: {do %fin.r}&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;fin: make lib-kernel [&lt;br /&gt;&lt;br /&gt;    ; Future Value&lt;br /&gt;    fv: func [&lt;br /&gt;        {Computes future value based on present value.}&lt;br /&gt;        value   [number! money!] "Present value"&lt;br /&gt;        rate    [number!] "Interest Rate"&lt;br /&gt;        periods [number!] "Number of time periods"&lt;br /&gt;    ][&lt;br /&gt;        1 + rate ** periods * value&lt;br /&gt;    ]&lt;br /&gt;    ;lib/fin/fv 1000 .1 12&lt;br /&gt;    ;lib/fin/fv 1000 .1 24&lt;br /&gt;    ;lib/fin/fv 1000 .1 36&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    ; Compound Interest&lt;br /&gt;    interest: func [&lt;br /&gt;        {Computes accumulated compound interest.}&lt;br /&gt;        value   [number! money!] "Present value"&lt;br /&gt;        rate    [number!] "Interest Rate"&lt;br /&gt;        periods [number!] "Number of time periods"&lt;br /&gt;    ][&lt;br /&gt;        1 + rate ** periods - 1 * value&lt;br /&gt;    ]&lt;br /&gt;    ;lib/fin/interest 1000 .1 12&lt;br /&gt;    ;lib/fin/interest 1000 .1 24&lt;br /&gt;    ;lib/fin/interest 1000 .1 36&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    ; Interest Rate&lt;br /&gt;    rate: func [&lt;br /&gt;        {Computes interest rate for a given future value.}&lt;br /&gt;        value        [number! money!] "Present value"&lt;br /&gt;        future-value [number! money!] "Future value"&lt;br /&gt;        periods      [number!] "Number of time periods"&lt;br /&gt;    ][&lt;br /&gt;        future-value / value ** (1 / periods) - 1&lt;br /&gt;    ]&lt;br /&gt;    ;lib/fin/rate 1000 future-value 1000 .1 12 12&lt;br /&gt;    ;lib/fin/rate 1000 future-value 1000 .1 24 24&lt;br /&gt;    ;lib/fin/rate 1000 future-value 1000 .1 36 36&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    ; Present Value&lt;br /&gt;    pv: func [&lt;br /&gt;        {Computes present value based on future value.}&lt;br /&gt;        value   [number! money!] "Future value"&lt;br /&gt;        rate    [number!] "Interest Rate"&lt;br /&gt;        periods [number!] "Number of time periods"&lt;br /&gt;    ][&lt;br /&gt;        1 + rate ** (negate periods) * value&lt;br /&gt;        ; - or -&lt;br /&gt;        ;value / (1 + rate ** periods)&lt;br /&gt;    ]&lt;br /&gt;    ;lib/fin/pv future-value 1000 .1 12 .1 12&lt;br /&gt;    ;lib/fin/pv future-value 1000 .1 24 .1 24&lt;br /&gt;    ;lib/fin/pv future-value 1000 .1 36 .1 36&lt;br /&gt;&lt;br /&gt;    npv: func [&lt;br /&gt;        {Computes net present value based on future cash flow values&lt;br /&gt;        using continuous discounting.}&lt;br /&gt;        values  [any-block!] "Cash flow values"&lt;br /&gt;        rate    [number!] "Interest Rate"&lt;br /&gt;        /local result&lt;br /&gt;    ][&lt;br /&gt;        result: $0.0&lt;br /&gt;        repeat i length? values [&lt;br /&gt;            result: result + pv values/:i rate i&lt;br /&gt;        ]&lt;br /&gt;        result&lt;br /&gt;    ]&lt;br /&gt;    ;lib/fin/npv [1000 2000 3000] .1&lt;br /&gt;    ;lib/fin/npv [-10000, 3000, 4200, 6800] .1&lt;br /&gt;&lt;br /&gt;    ;[-$70'000 $12'000 $15'000 $18'000 $21'000 $26'000]&lt;br /&gt;&lt;br /&gt;    ; Time Periods&lt;br /&gt;    nper: func [&lt;br /&gt;        {Computes the number of time periods from the present value&lt;br /&gt;        to a given future value.}&lt;br /&gt;        value        [number! money!] "Present value"&lt;br /&gt;        future-value [number! money!] "Future value"&lt;br /&gt;        rate         [number!] "Interest Rate"&lt;br /&gt;    ][&lt;br /&gt;        ; 2 versions. Both work.&lt;br /&gt;        (log-e (future-value / value)) / (log-e (rate + 1))&lt;br /&gt;        ;divide log-e divide future-value value  log-e add rate 1&lt;br /&gt;    ]&lt;br /&gt;    ;lib/fin/nper 1000 future-value 1000 .1 12 .1&lt;br /&gt;    ;lib/fin/nper 1000 future-value 1000 .1 24 .1&lt;br /&gt;    ;lib/fin/nper 1000 future-value 1000 .1 36 .1&lt;br /&gt;&lt;br /&gt;    irr: func [&lt;br /&gt;        {Computes the internal rate of return based on future cash flow values.&lt;br /&gt;        The internal rate of return of a cash flow is the interest rate that&lt;br /&gt;        makes the present value of a cash flow equal to zero. THIS IS A QUICKLY&lt;br /&gt;        HACKED VERSION AND NEEDS TO BE CLEANED UP! HERE FOR TESTING.}&lt;br /&gt;        values  [any-block!] "Cash flow values"&lt;br /&gt;        /guess&lt;br /&gt;            guess-val&lt;br /&gt;        /local rates rate npv-result result&lt;br /&gt;    ][&lt;br /&gt;        tries: 50&lt;br /&gt;        ACCURACY: $.000001&lt;br /&gt;        range: none&lt;br /&gt;        rtb: dx: x-mid: 0.0&lt;br /&gt;        f-mid: $0&lt;br /&gt;&lt;br /&gt;        if not guess [guess-val: .2]&lt;br /&gt;&lt;br /&gt;        if range: bracket-fn :npv values 0 guess-val [&lt;br /&gt;            either ((npv values range/1) &lt; $0) [&lt;br /&gt;                rtb: range/1&lt;br /&gt;                dx:  range/2 - range/1&lt;br /&gt;            ][&lt;br /&gt;                rtb: range/2&lt;br /&gt;                dx:  range/1 - range/2&lt;br /&gt;            ]&lt;br /&gt;            loop tries [&lt;br /&gt;            	dx: dx * 0.5&lt;br /&gt;            	x-mid: rtb + dx&lt;br /&gt;            	f-mid: npv values x-mid&lt;br /&gt;            	if (f-mid &lt;= $0) [rtb: x-mid]&lt;br /&gt;            	if any [&lt;br /&gt;                    (abs f-mid &lt; ACCURACY)&lt;br /&gt;                    (abs dx &lt; second ACCURACY)&lt;br /&gt;                ] [return x-mid]&lt;br /&gt;            ]&lt;br /&gt;            return none&lt;br /&gt;        ]&lt;br /&gt;    ]&lt;br /&gt;&lt;br /&gt;    bracket-fn: func [&lt;br /&gt;        {Adapted from Numerical Recipes. Given a user supplied function and a&lt;br /&gt;        given 'guess' range (x1 to x2) it expands the range geometrically until&lt;br /&gt;        a root is bracketed by the returned values x1 and x2, in which case&lt;br /&gt;        the range is returned as a block of those two values. If it doesn't&lt;br /&gt;        succeed after 50 tries, it returns false. This was built to support&lt;br /&gt;        IRR so it's designed to call NPV, which takes one arg. It should be&lt;br /&gt;        generalized.}&lt;br /&gt;        fn arg x1 x2&lt;br /&gt;        /local factor tries f1 f2&lt;br /&gt;    ][&lt;br /&gt;        tries: 50&lt;br /&gt;        factor: 1.6&lt;br /&gt;        f1: fn arg x1&lt;br /&gt;        f2: fn arg x2&lt;br /&gt;        loop tries [&lt;br /&gt;            ; We have to use SECOND on f2 because it's a money! value&lt;br /&gt;            ; and the numeric component is returned by SECOND.&lt;br /&gt;            if negative? multiply f1 second f2 [&lt;br /&gt;                return reduce [x1 x2]&lt;br /&gt;            ]&lt;br /&gt;            either (abs f1) &lt; (abs f2) [&lt;br /&gt;                x1: x1 + (factor * (x1 - x2))&lt;br /&gt;                f1: fn arg x1&lt;br /&gt;            ][&lt;br /&gt;                x2: x2 + (factor * (x2 - x1))&lt;br /&gt;                f2: fn arg x2&lt;br /&gt;            ]&lt;br /&gt;        ]&lt;br /&gt;        false&lt;br /&gt;    ]&lt;br /&gt;    ;bracket-fn get in lib/fin 'npv values 0 .2&lt;br /&gt;    ;values: [-$70'000 $12'000 $15'000 $18'000 $21'000 $26'000]&lt;br /&gt;    ;lib/fin/irr values&lt;br /&gt;    ;lib/fin/irr copy/part values 5&lt;br /&gt;    ;lib/fin/irr copy/part values 3&lt;br /&gt;    ;lib/fin/irr/guess copy/part values 3 -.1&lt;br /&gt;    ;values: [-10 1.8 1.8 1.8 1.8 1.8 1.8 1.8 2.8]&lt;br /&gt;    ;lib/fin/irr values&lt;br /&gt;    ;values: [0 -1073 -1459 -1364 -1247 -1110 31789]&lt;br /&gt;    ;lib/fin/irr values&lt;br /&gt;&lt;br /&gt;;     irr: func [&lt;br /&gt;;         {Computes the internal rate of return based on future cash flow values.&lt;br /&gt;;         The internal rate of return of a cash flow is the interest rate that&lt;br /&gt;;         makes the present value of a cash flow equal to zero. THIS IS A QUICKLY&lt;br /&gt;;         HACKED VERSION AND NEEDS TO BE CLEANED UP! HERE FOR TESTING.}&lt;br /&gt;;         values  [any-block!] "Cash flow values"&lt;br /&gt;;         /guess&lt;br /&gt;;             guess-val&lt;br /&gt;;         /local rates rate npv-result result&lt;br /&gt;;     ][&lt;br /&gt;;         ACCURACY: $.000001&lt;br /&gt;;         tries: 50&lt;br /&gt;;         range: none&lt;br /&gt;;         rtb: dx: x-mid: 0.0&lt;br /&gt;;         f-mid: $0&lt;br /&gt;;         if not guess [guess-val: .2]&lt;br /&gt;;         if range: bracket-fn :npv values 0 guess-val [&lt;br /&gt;;             f: npv values range/1&lt;br /&gt;;             either (f &lt; $0) [&lt;br /&gt;;                 rtb: range/1&lt;br /&gt;;                 dx: range/2 - range/1&lt;br /&gt;;             ][&lt;br /&gt;;                 rtb: range/2&lt;br /&gt;;                 dx: range/1 - range/2&lt;br /&gt;;             ]&lt;br /&gt;;             loop tries [&lt;br /&gt;;             	dx: dx * 0.5&lt;br /&gt;;             	x-mid: rtb + dx&lt;br /&gt;;             	f-mid: npv values x-mid&lt;br /&gt;;             	if (f-mid &lt;= $0) [rtb: x-mid]&lt;br /&gt;;             	if any [&lt;br /&gt;;                     ((abs f-mid) &lt; ACCURACY)&lt;br /&gt;;                     ((abs dx) &lt; (second ACCURACY))&lt;br /&gt;;                 ] [return x-mid]&lt;br /&gt;;             ]&lt;br /&gt;;             return none&lt;br /&gt;;         ]&lt;br /&gt;;     ]&lt;br /&gt;;&lt;br /&gt;;     bracket-fn: func [&lt;br /&gt;;         {Adapted from Numerical Recipes. Given a user supplied function and a&lt;br /&gt;;         given 'guess' range (x1 to x2) it expands the range geometrically until&lt;br /&gt;;         a root is bracketed by the returned values x1 and x2, in which case&lt;br /&gt;;         the range is returned as a block of those two values. If it doesn't&lt;br /&gt;;         succeed after 50 tries, it returns false. This was built to support&lt;br /&gt;;         IRR so it's designed to call NPV, which takes one arg. It should be&lt;br /&gt;;         generalized.}&lt;br /&gt;;         fn arg x1 x2&lt;br /&gt;;         /local factor tries f1 f2&lt;br /&gt;;     ][&lt;br /&gt;;         tries: 50&lt;br /&gt;;         factor: 1.6&lt;br /&gt;;         f1: fn arg x1&lt;br /&gt;;         f2: fn arg x2&lt;br /&gt;;         loop tries [&lt;br /&gt;;             ; We have to use SECOND on f2 because it's a money! value&lt;br /&gt;;             ; and the numeric component is returned by SECOND.&lt;br /&gt;;             if negative? multiply f1 second f2 [&lt;br /&gt;;                 return reduce [x1 x2]&lt;br /&gt;;             ]&lt;br /&gt;;             either (abs f1) &lt; (abs f2) [&lt;br /&gt;;                 x1: x1 + (factor * (x1 - x2))&lt;br /&gt;;                 f1: fn arg x1&lt;br /&gt;;             ][&lt;br /&gt;;                 x2: x2 + (factor * (x2 - x1))&lt;br /&gt;;                 f2: fn arg x2&lt;br /&gt;;             ]&lt;br /&gt;;         ]&lt;br /&gt;;         false&lt;br /&gt;;     ]&lt;br /&gt;&lt;br /&gt;]&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 13 Jan 2006 04:05:22 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1143</guid>
      <author>gregg.irwin (Gregg Irwin)</author>
    </item>
    <item>
      <title>Java-Like Javascript Library Container //Javascript Object</title>
      <link>http://snippets.dzone.com/posts/show/442</link>
      <description>&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com&lt;br /&gt;&lt;br /&gt;libraryControl = {&lt;br /&gt;	baseURI: '',&lt;br /&gt;	packs: {},&lt;br /&gt;&lt;br /&gt;	register: function( pack ){&lt;br /&gt;		for( var _, m, p = this.packs, pack = ( m = pack.split( '.' ) ).pop(); _ = m.shift(); p = p[_] || ( p[_]={} ) );&lt;br /&gt;		( p['%files%'] || ( p['%files%'] = {} ) )[pack] = {included:false,loaded:false};&lt;br /&gt;	},&lt;br /&gt;&lt;br /&gt;	findPackage: function( pack ){&lt;br /&gt;		for( var m, p = this.packs, pack = ( m = pack.split( '.' ) ).pop(); m.length &amp;&amp; ( p = p[ m.shift() ] ); );&lt;br /&gt;		return !m.length &amp;&amp; (p=p['%files%']) ? p[pack] : null;&lt;br /&gt;	},&lt;br /&gt;&lt;br /&gt;	isIncluded: function( pack ){&lt;br /&gt;		with( {x:this.findPackage( pack )} ) return x &amp;&amp; x.included;&lt;br /&gt;	},&lt;br /&gt;&lt;br /&gt;	isLoaded: function( pack ){&lt;br /&gt;		with( {x:this.findPackage( pack )} ) return x &amp;&amp; x.loaded;&lt;br /&gt;	},&lt;br /&gt;&lt;br /&gt;	include: function( pack ) {&lt;br /&gt;		var p = this.findPackage( pack ), pack = this.baseURI + pack.split( '.' ).join( '/' ) + '.js';&lt;br /&gt;		if( p ){&lt;br /&gt;			if( !document.body )&lt;br /&gt;				document.write( '&lt;script type="text/javascript" src="'+pack+'"&gt;&lt;\/script&gt;' );&lt;br /&gt;			else with( {s: document.createElement( 'script' ) } ){&lt;br /&gt;				s.type = 'text/javascript';&lt;br /&gt;				s.src = pack;&lt;br /&gt;				document.body.appendChild( s );&lt;br /&gt;			}&lt;br /&gt;			return p.included = true;&lt;br /&gt;		}&lt;br /&gt;		return false;&lt;br /&gt;	},&lt;br /&gt;&lt;br /&gt;	require: function( pack ) {&lt;br /&gt;		var p = this.findPackage( pack );&lt;br /&gt;  		if( p &amp;&amp; !p.included )&lt;br /&gt;			return this.include( pack );&lt;br /&gt;		return false;&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//libraryControl.register( 'library.test' );&lt;br /&gt;//libraryControl.require( 'library.test' );&lt;br /&gt;//libraryControl.include( 'library.test' );&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sat, 02 Jul 2005 04:12:28 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/442</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
  </channel>
</rss>
