PageSourceSearch

https://cinespia.org/wp-content/plugins/ticketweb/js/jquery.metadata.js?ver=5de3fb140e09aa2ef80040ad022f1319

js cinespia.org collected 2026-09-24 20:02:48 UTC 5,649 bytes, 143 lines download raw bytes

1/*
2 * Metadata - jQuery plugin for parsing metadata from elements
3 *
4 * Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan
5 *
6 * Dual licensed under the MIT and GPL licenses:
7 *   http://www.opensource.org/licenses/mit-license.php
8 *   http://www.gnu.org/licenses/gpl.html
9 *
10 * Revision: $Id: jquery.metadata.js 3640 2007-10-11 18:34:38Z pmclanahan $
11 *
12 */
13
14/**
15 * Sets the type of metadata to use. Metadata is encoded in JSON, and each property
16 * in the JSON will become a property of the element itself.
17 *
18 * There are four supported types of metadata storage:
19 *
20 *   attr:  Inside an attribute. The name parameter indicates *which* attribute.
21 *
22 *   class: Inside the class attribute, wrapped in curly braces: { }
23 *
24 *   elem:  Inside a child element (e.g. a script tag). The
25 *          name parameter indicates *which* element.
26 *   html5: Values are stored in data-* attributes.
27 *
28 * The metadata for an element is loaded the first time the element is accessed via jQuery.
29 *
30 * As a result, you can define the metadata type, use $(expr) to load the metadata into the elements
31 * matched by expr, then redefine the metadata type and run another $(expr) for other elements.
32 *
33 * @name $.metadata.setType
34 *
35 * @example <p id="one" class="some_class {item_id: 1, item_label: 'Label'}">This is a p</p>
36 * @before $.metadata.setType("class")
37 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
38 * @desc Reads metadata from the class attribute
39 *
40 * @example <p id="one" class="some_class" data="{item_id: 1, item_label: 'Label'}">This is a p</p>
41 * @before $.metadata.setType("attr", "data")
42 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
43 * @desc Reads metadata from a "data" attribute
44 *
45 * @example <p id="one" class="some_class"><script>{item_id: 1, item_label: 'Label'}</script>This is a p</p>
46 * @before $.metadata.setType("elem", "script")
47 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
48 * @desc Reads metadata from a nested script element
49 *
50 * @example <p id="one" class="some_class" data-item_id="1" data-item_label="Label">This is a p</p>
51 * @before $.metadata.setType("html5")
52 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
53 * @desc Reads metadata from a series of data-* attributes
54 *
55 * @param String type The encoding type
56 * @param String name The name of the attribute to be used to get metadata (optional)
57 * @cat Plugins/Metadata
58 * @descr Sets the type of encoding to be used when loading metadata for the first time
59 * @type undefined
60 * @see metadata()
61 */
62
63(function ($) {
64    $.extend({
65        metadata: {
66            defaults: {
67                type: 'class',
68                name: 'metadata',
69                cre: /({.*})/,
70                single: 'metadata'
71            },
72            setType: function (type, name) {
73                this.defaults.type = type;
74                this.defaults.name = name;
75            },
76            get: function (elem, opts) {
77                var settings = $.extend({}, this.defaults, opts);
78                // check for empty string in single property
79                if (!settings.single.length) settings.single = 'metadata';
80
81                var data = $.data(elem, settings.single);
82                // returned cached data if it already exists
83                if (data) return data;
84
85                data = '{}';
86
87                var getData = function (data) {
88                    if (typeof data != 'string') return data;
89
90                    if (data.indexOf('{') < 0) {
91                        data = eval('(' + data + ')');
92                    }
93                };
94
95                var getObject = function (data) {
96                    if (typeof data != 'string') return data;
97
98                    data = eval('(' + data + ')');
99                    return data;
100                };
101
102                if (settings.type == 'html5') {
103                    var object = {};
104                    $(elem.attributes).each(function () {
105                        var name = this.nodeName;
106                        if (name.match(/^data-/)) name = name.replace(/^data-/, '');
107                        else return true;
108                        object[name] = getObject(this.nodeValue);
109                    });
110                } else {
111                    if (settings.type == 'class') {
112                        var m = settings.cre.exec(elem.className);
113                        if (m) data = m[1];
114                    } else if (settings.type == 'elem') {
115                        if (!elem.getElementsByTagName) return;
116                        var e = elem.getElementsByTagName(settings.name);
117                        if (e.length) data = $.trim(e[0].innerHTML);
118                    } else if (elem.getAttribute != undefined) {
119                        var attr = elem.getAttribute(settings.name);
120                        if (attr) data = attr;
121                    }
122                    object = getObject(data.indexOf('{') < 0 ? '{' + data + '}' : data);
123                }
124
125                $.data(elem, settings.single, object);
126                return object;
127            }
128        }
129    });
130
131    /**
132     * Returns the metadata object for the first member of the jQuery object.
133     *
134     * @name metadata
135     * @descr Returns element's metadata object
136     * @param Object opts An object contianing settings to override the defaults
137     * @type jQuery
138     * @cat Plugins/Metadata
139     */
140    $.fn.metadata = function (opts) {
141        return $.metadata.get(this[0], opts);
142    };
143})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.