diff --git a/dist/magicbook.min.js b/dist/magicbook.min.js index f533470..552104b 100644 --- a/dist/magicbook.min.js +++ b/dist/magicbook.min.js @@ -1 +1 @@ -!function(n,r){function t(n,r){return C.call(n)===r}function a(n){return t(n,"[object Function]")}function e(n){return t(n,"[object String]")}function o(n){return t(n,"[object Array]")}function i(n){return t(n,"[object Number]")}function c(n){return"undefined"==typeof n}function u(n){return null===n||c(n)?[]:o(n)&&n||[n]}function l(n,r,t){return n&&r&&n[r]||t}function s(n,r){return{}.hasOwnProperty.call(n,r)}function f(n,t){n&&r.get(n).success(function(n){t&&a(t.success)&&t.success(n)}).fail(function(n){t&&a(t.fail)&&t.fail(n)}).always(function(){t&&a(t["finally"])&&t["finally"]()})}function d(n,t){var a=r(n);a&&!a.hasClass(t)&&a.addClass(t)}function g(n,r,t,e){var i,c,u,s=!1;if(!o(n))return s;for(i=0,c=n.length;c>i;i++)u=l(n[i],r),a(u)&&(s=!0,u.apply(t,e));return s}function v(n,r){d(n,m+r)}function p(n,r){n.after(r),n.remove(),r.append(n)}var h={title:"magicbook - An lightweight and scalable docs system for markdown, text or other.",container:"",navigator:"",content:"",navigatorUrl:"navigator.md",homeUrl:"README.md",baseUrl:"",urlArgs:"",debug:!1,navigatorCallbackQueue:[],routeCallbackQueue:[]},m="magicbook-",b=n.location,y=n.document,k=Object.prototype,C=k.toString,$=n.Magicbook=function Q(t){function a(){var n,t,a,e=c.container,o=c.navigator,u=c.content,l=r('
'),s=r('
');o||u?(o&&(t=r(o),t.length&&(v(t,"navigator"),p(t,l))),u&&(a=r(u),a.length&&(v(a,"content"),p(a,s)))):(n=r(e),n.length||(n=r('
'),r("body").prepend(n)),v(n,"container"),t=r('
'),a=r('
'),l.append(t),s.append(a),n.append(l).append(s)),i.$container=n,i.$navigatorWrap=l,i.$contentWrap=s,i.$navigator=t,i.$content=a}function e(n){var t,a,e;for(t=0,a=n.length;a>t;t++)e=r(n[t]),e.attr("src",i.relativeCurrentUrl(e.attr("src")))}function o(){var n=i.normalizeUrl(c.navigatorUrl),r=c.navigatorCallbackQueue;n&&f(n,{success:function(n){var t=i.parser(n);i.$navigator&&i.$navigator.empty().append(i.parser(n)),g(r,"success",i,[{origin:n,result:t}])},fail:function(n){g(r,"fail",i,[n])||i.$navigator&&i.$navigator.empty().append('
navigator not found
')},"finally":function(){g(r,"finally",i)}})}if(!(this instanceof Q))return new Q(t);var i=this,c=i.config=r.extend({},h,t);c.navigatorCallbackQueue=u(c.navigatorCallbackQueue),c.routeCallbackQueue=u(c.routeCallbackQueue),c.navigatorCallbackQueue.unshift({success:function(){e(i.$navigatorWrap.find("img"))}}),c.routeCallbackQueue.unshift({success:function(){e(i.$contentWrap.find("img"))}}),i.handlers={},i.handlersCount=0,i.handler("drawNavigator",o,{priority:1}),i.handler("drawContent",function(){i.route()},{priority:1}),n.onhashchange=function(){i.route(b.hash)},y.title=c.title,a()},w=$.potion=$.prototype;w.parser=function(n){return n},w.route=function(n,r){var t=this,a=e(n)&&n||b.hash||t.config.homeUrl;a=t.normalizeUrl(a),t.render(a,r)},w.render=function(n,r){var t=this,a=t.config.routeCallbackQueue,e=u(r);n&&f(n,{success:function(n){var r=t.parser(n);t.$content&&t.$content.empty().append(r),g(a,"success",t,[{origin:n,result:r}]),g(e,"success",t,[{origin:n,result:r}])},fail:function(n){g(a,"fail",t,[n])||g(e,"fail",t,[n])||t.$content&&t.$content.empty().append('
content not found
')},"finally":function(){g(a,"finally",t),g(e,"finally",t)}})},w.normalizeUrl=function(n){if(!n)return n;var r=this,t=r.config,a=t.urlArgs,o=t.baseUrl+n.replace(/^#/,"");return a&&e(a)&&(o+=(-1===o.indexOf("?")?"?":"&")+a),o},w.relativeCurrentUrl=function(n){var r=this,t=b.hash||r.config.homeUrl,a=t||"";return!t&&!n||!e(t)||n&&!e(n)?n||"":-1!==n.search(/\:\/\//)?n:(a=a.replace(/\#/,"").replace(/\/$/,""),a=a+(t&&"/../"||"")+(n||""),r.normalizeUrl(a))},w.handler=function(n,t,a){var o=this,i=o.handlers;if(n&&e(n)&&!t&&!a)return i[n];var c=i[n],u={order:c&&c.order||o.handlersCount++,name:n,action:t,options:r.extend({priority:2},a)};i[n]=u},w.show=function(){var n,r,t=this,e=t.handlers,o=[];for(var i in e){if(!s(e,i))return;var c=e[i],u=c.options.priority;for(n=0,r=o.length;r>n;n++){var l=o[n],f=l.options.priority;if(f>u||u===f&&c.ordern;n++){var d=o[n].action;a(d)&&d.call(this)}};var U={};$.markdown=function(n,r){var t=U[n]||$;return t(r)},$.customizeMarkdown=function(n,r){U[n]=r},$.toStringEqual=t,$.isFunction=a,$.isString=e,$.isArray=o,$.isNumber=i,$.isUndefined=c,$.parseArray=u,$.getPropertyByDefaultValue=l,$.hasOwnProperty=s,$.requestGet=f,$.addClassName=d}(window,jQuery); \ No newline at end of file +!function(n,r){function t(n,r){return C.call(n)===r}function a(n){return t(n,"[object Function]")}function e(n){return t(n,"[object String]")}function o(n){return t(n,"[object Array]")}function i(n){return t(n,"[object Number]")}function c(n){return"undefined"==typeof n}function u(n){return null===n||c(n)?[]:o(n)&&n||[n]}function l(n,r,t){return n&&r&&n[r]||t}function s(n,r){return{}.hasOwnProperty.call(n,r)}function f(n,t){n&&r.get(n).success(function(n){t&&a(t.success)&&t.success(n)}).fail(function(n){t&&a(t.fail)&&t.fail(n)}).always(function(){t&&a(t["finally"])&&t["finally"]()})}function d(n,t){var a=r(n);a&&!a.hasClass(t)&&a.addClass(t)}function g(n,r,t,e){var i,c,u,s=!1;if(!o(n))return s;for(i=0,c=n.length;c>i;i++)u=l(n[i],r),a(u)&&(s=!0,u.apply(t,e));return s}function v(n,r){d(n,m+r)}function p(n,r){n.after(r),n.remove(),r.append(n)}var h={title:"magicbook - An lightweight and scalable docs system for markdown, text or other.",container:"",navigator:"",content:"",navigatorUrl:"navigator.md",homeUrl:"README.md",baseUrl:"",urlArgs:"",debug:!1,navigatorCallbackQueue:[],routeCallbackQueue:[]},m="magicbook-",b=n.location,y=n.document,k=Object.prototype,C=k.toString,U=n.Magicbook=function Q(t){function a(){var n,t,a,e=c.container,o=c.navigator,u=c.content,l=r('
'),s=r('
');o||u?(o&&(t=r(o),t.length&&(v(t,"navigator"),p(t,l))),u&&(a=r(u),a.length&&(v(a,"content"),p(a,s)))):(n=r(e),n.length||(n=r('
'),r("body").prepend(n)),v(n,"container"),t=r('
'),a=r('
'),l.append(t),s.append(a),n.append(l).append(s)),i.$container=n,i.$navigatorWrap=l,i.$contentWrap=s,i.$navigator=t,i.$content=a}function e(n){var t,a,e;for(t=0,a=n.length;a>t;t++)e=r(n[t]),e.attr("src",i.relativeCurrentUrl(e.attr("src")))}function o(){var n=i.normalizeUrl(c.navigatorUrl),r=c.navigatorCallbackQueue;n&&f(n,{success:function(n){var t=i.parser(n);i.$navigator&&i.$navigator.empty().append(i.parser(n)),g(r,"success",i,[{origin:n,result:t}])},fail:function(n){g(r,"fail",i,[n])||i.$navigator&&i.$navigator.empty().append('
navigator not found
')},"finally":function(){g(r,"finally",i)}})}if(!(this instanceof Q))return new Q(t);var i=this,c=i.config=r.extend({},h,t);c.navigatorCallbackQueue=u(c.navigatorCallbackQueue),c.routeCallbackQueue=u(c.routeCallbackQueue),c.navigatorCallbackQueue.unshift({success:function(){e(i.$navigatorWrap.find("img"))}}),c.routeCallbackQueue.unshift({success:function(){e(i.$contentWrap.find("img"))}}),i.handlers={},i.handlersCount=0,i.handler("drawNavigator",o,{priority:1}),i.handler("drawContent",function(){i.route()},{priority:1}),n.onhashchange=function(){i.route(b.hash)},y.title=c.title,a()},$=U.potion=U.prototype;$.parser=function(n){return n},$.route=function(n,r){var t=this,a=e(n)&&n||b.hash||t.config.homeUrl;a=t.normalizeUrl(a),t.render(a,r)},$.render=function(n,r){var t=this,a=t.config.routeCallbackQueue,e=u(r);n&&f(n,{success:function(n){var r=t.parser(n);t.$content&&t.$content.empty().append(r),g(a,"success",t,[{origin:n,result:r}]),g(e,"success",t,[{origin:n,result:r}])},fail:function(n){g(a,"fail",t,[n])||g(e,"fail",t,[n])||t.$content&&t.$content.empty().append('
content not found
')},"finally":function(){g(a,"finally",t),g(e,"finally",t)}})},$.normalizeUrl=function(n){if(!n)return n;var r=this,t=r.config,a=t.urlArgs,o=t.baseUrl+n.replace(/^#/,"");return a&&e(a)&&(o+=(-1===o.indexOf("?")?"?":"&")+a),o},$.relativeCurrentUrl=function(n){var r=this,t=b.hash||r.config.homeUrl,a=t||"";return!t&&!n||!e(t)||n&&!e(n)?n||"":-1!==n.search(/\:\/\//)?n:(a=a.replace(/\#/,"").replace(/\/$/,""),a=a+(t&&"/../"||"")+(n||""),r.normalizeUrl(a))},$.handler=function(n,t,a){var o=this,i=o.handlers;if(n&&e(n)&&!t&&!a)return i[n];var c=i[n],u={order:c&&c.order||o.handlersCount++,name:n,action:t,options:r.extend({priority:2},a)};i[n]=u},$.show=function(){var n,r,t=this,e=t.handlers,o=[];for(var i in e){if(!s(e,i))return;var c=e[i],u=c.options.priority;for(n=0,r=o.length;r>n;n++){var l=o[n],f=l.options.priority;if(f>u||u===f&&c.ordern;n++){var d=o[n].action;a(d)&&d.call(this)}},$.getCurrentDocUrl=function(){var n=this,r=b.hash||n.config.homeUrl;return r.replace(/^#/,"")};var w={};U.markdown=function(n,r){var t=w[n]||U;return t(r)},U.customizeMarkdown=function(n,r){w[n]=r},U.toStringEqual=t,U.isFunction=a,U.isString=e,U.isArray=o,U.isNumber=i,U.isUndefined=c,U.parseArray=u,U.getPropertyByDefaultValue=l,U.hasOwnProperty=s,U.requestGet=f,U.addClassName=d}(window,jQuery); \ No newline at end of file diff --git a/lib/magicbook.js b/lib/magicbook.js index c0c1c56..75a4dce 100644 --- a/lib/magicbook.js +++ b/lib/magicbook.js @@ -394,6 +394,13 @@ } }; + proto.getCurrentDocUrl = function getCurrentDocUrl() { + var self = this; + var url = globalLocation.hash || self.config.homeUrl; + + return url.replace(/^#/, ''); + }; + var markdownFactories = {}; Magicbook.markdown = function markdown(name, cfg) { var factory = markdownFactories[name] || Magicbook; diff --git a/plugins/components/js/agilities.js b/plugins/components/js/agilities.js index 354562f..a26c088 100644 --- a/plugins/components/js/agilities.js +++ b/plugins/components/js/agilities.js @@ -24,12 +24,6 @@ return urls; } - function getCurrentUrl(defaultUrl) { - var url = globalLocation.hash || defaultUrl; - - return url.replace(/^#/, ''); - } - /** * draw button of scroll to top * @param {Object|boolean} cfg => true/false or { @@ -135,7 +129,7 @@ function flip(type) { var _type = type || 'next'; - var curUrl = getCurrentUrl(homeUrl); + var curUrl = self.getCurrentDocUrl(); var curIndex = urls.indexOf(curUrl); if (curIndex === -1) { diff --git a/plugins/components/js/agilities.min.js b/plugins/components/js/agilities.min.js index e1722de..2d4f3fd 100644 --- a/plugins/components/js/agilities.min.js +++ b/plugins/components/js/agilities.min.js @@ -1 +1 @@ -!function(e,n,a){function i(e,a){var i,o,l=[];for(i=0,o=e.length;o>i;i++){var t=n(e[i]),c=t.attr("href").replace(/^#/,"")||a;l.push(c)}return l}function o(e){var n=s.hash||e;return n.replace(/^#/,"")}function l(e){if(e){var i={label:"scrollToTop"},o=this,l=n.extend({},i,e),t=l.selector,s=t&&n(t)||n("
"+l.label+"
"),p=n("body"),d=o.$navigatorWrap,f=o.$contentWrap,u=a.potion.scrollToTop=function(e){0!==f.scrollTop()&&f.scrollTop(0)||p.scrollTop(e&&d.height()||0)};a.addClassName(s,c+"scroll-top"),a.addClassName(s,r),s.on("click",function(){u()}),o.config.routeCallbackQueue.push({success:function(){u(!0)}}),!t&&o.$container.append(s)}}function t(e){function l(){function e(e){0>e||e>=f||(0!==e&&g.show()||g.hide(),e!==f-1&&m.show()||m.hide())}function l(n){var a=n||"next",i=o(u),l=p.indexOf(i);-1!==l&&("next"===a&&l++||"prev"===a&&l--,"initialize"!==a&&l>=0&&f>l&&(s.hash=p[l]||""),e(l))}var t=n("a[href^=#]"),p=i(t,u),f=p.length;if(f){var g=v&&n(v)||n("
"+h+"
"),m=x&&n(x)||n("
"+b+"
"),C=a.potion.prev=function(){l("prev")},T=a.potion.next=function(){l()};if(a.addClassName(g,c+"prev"),a.addClassName(g,r),a.addClassName(m,c+"next"),a.addClassName(m,r),g.on("click",function(){C()}),m.on("click",function(){T()}),!v||!x){var k=n("
");a.addClassName(k,c+"flip-wrap"),!v&&k.append(g),!x&&k.append(m),d.$container.append(k)}t.on("click",function(){var a=(n(this).attr("href")||"").replace(/#/,"")||u;e(p.indexOf(a)),s.hash=a}),l("initialize")}}if(e){var t={prev:{label:"prev"},next:{label:"next"}},d=this,f=n.extend({},p,t),u=d.config.homeUrl,v=f.prev.selector,h=f.prev.label,x=f.next.selector,b=f.next.label;d.config.navigatorCallbackQueue.push({success:l})}}var c="magicbook-agilities-",r=c+"button",s=e.location,p={scrollTop:!0,flip:!0};a.potion.agilities=function(e){var a=this,i=n.extend({},p,e);l.call(a,i.scrollTop),t.call(a,i.flip)}}(window,jQuery,Magicbook); \ No newline at end of file +!function(e,n,i){function o(e,i){var o,a,l=[];for(o=0,a=e.length;a>o;o++){var t=n(e[o]),c=t.attr("href").replace(/^#/,"")||i;l.push(c)}return l}function a(e){if(e){var o={label:"scrollToTop"},a=this,l=n.extend({},o,e),r=l.selector,s=r&&n(r)||n("
"+l.label+"
"),p=n("body"),d=a.$navigatorWrap,f=a.$contentWrap,u=i.potion.scrollToTop=function(e){0!==f.scrollTop()&&f.scrollTop(0)||p.scrollTop(e&&d.height()||0)};i.addClassName(s,t+"scroll-top"),i.addClassName(s,c),s.on("click",function(){u()}),a.config.routeCallbackQueue.push({success:function(){u(!0)}}),!r&&a.$container.append(s)}}function l(e){function a(){function e(e){0>e||e>=d||(0!==e&&x.show()||x.hide(),e!==d-1&&b.show()||b.hide())}function a(n){var i=n||"next",o=p.getCurrentDocUrl(),a=s.indexOf(o);-1!==a&&("next"===i&&a++||"prev"===i&&a--,"initialize"!==i&&a>=0&&d>a&&(r.hash=s[a]||""),e(a))}var l=n("a[href^=#]"),s=o(l,f),d=s.length;if(d){var x=u&&n(u)||n("
"+v+"
"),b=h&&n(h)||n("
"+g+"
"),C=i.potion.prev=function(){a("prev")},m=i.potion.next=function(){a()};if(i.addClassName(x,t+"prev"),i.addClassName(x,c),i.addClassName(b,t+"next"),i.addClassName(b,c),x.on("click",function(){C()}),b.on("click",function(){m()}),!u||!h){var T=n("
");i.addClassName(T,t+"flip-wrap"),!u&&T.append(x),!h&&T.append(b),p.$container.append(T)}l.on("click",function(){var i=(n(this).attr("href")||"").replace(/#/,"")||f;e(s.indexOf(i)),r.hash=i}),a("initialize")}}if(e){var l={prev:{label:"prev"},next:{label:"next"}},p=this,d=n.extend({},s,l),f=p.config.homeUrl,u=d.prev.selector,v=d.prev.label,h=d.next.selector,g=d.next.label;p.config.navigatorCallbackQueue.push({success:a})}}var t="magicbook-agilities-",c=t+"button",r=e.location,s={scrollTop:!0,flip:!0};i.potion.agilities=function(e){var i=this,o=n.extend({},s,e);a.call(i,o.scrollTop),l.call(i,o.flip)}}(window,jQuery,Magicbook); \ No newline at end of file diff --git a/public/doc/methods.md b/public/doc/methods.md index 3042421..aeacd11 100644 --- a/public/doc/methods.md +++ b/public/doc/methods.md @@ -1,4 +1,11 @@ ## Methods +### getCurrentDocUrl +Get current document's url. + +##### parameters +none + + ### handler Get and set handler that add extra initialization to Magicbook.