mirror of
				https://github.com/Redocly/redoc.git
				synced 2025-11-04 17:57:30 +03:00 
			
		
		
		
	Use Reflect.metadate decorator instead of Class.parameters Add fallback old syntax of flexbox Other minor styling fixes
		
			
				
	
	
		
			69 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
import JsonPointerLib from 'json-pointer';
 | 
						|
 | 
						|
/**
 | 
						|
 * Wrapper for JsonPointer. Provides common operations
 | 
						|
 */
 | 
						|
export class JsonPointer extends JsonPointerLib {
 | 
						|
  /**
 | 
						|
   * returns last JsonPointer token
 | 
						|
   * if level > 1 returns levels last (second last/third last)
 | 
						|
   * @example
 | 
						|
   * // returns subpath
 | 
						|
   * JsonPointerHelper.baseName('/path/0/subpath')
 | 
						|
   * // returns foo
 | 
						|
   * JsonPointerHelper.baseName('/path/foo/subpath', 2)
 | 
						|
   */
 | 
						|
   static baseName(pointer, level=1) {
 | 
						|
     let tokens = JsonPointer.parse(pointer);
 | 
						|
     return tokens[tokens.length - (level)];
 | 
						|
   }
 | 
						|
 | 
						|
   /**
 | 
						|
    * returns dirname of pointer
 | 
						|
    * if level > 1 returns corresponding dirname in the hierarchy
 | 
						|
    * @example
 | 
						|
    * // returns /path/0
 | 
						|
    * JsonPointerHelper.dirName('/path/0/subpath')
 | 
						|
    * // returns /path
 | 
						|
    * JsonPointerHelper.dirName('/path/foo/subpath', 2)
 | 
						|
    */
 | 
						|
   static dirName(pointer, level=1) {
 | 
						|
     let tokens = JsonPointer.parse(pointer);
 | 
						|
     return JsonPointer.compile(tokens.slice(0, tokens.length - level));
 | 
						|
   }
 | 
						|
 | 
						|
   /**
 | 
						|
    * overridden JsonPointer original parse to take care of prefixing '#' symbol
 | 
						|
    * that is not valid JsonPointer
 | 
						|
    */
 | 
						|
   static parse(pointer) {
 | 
						|
     let ptr = pointer;
 | 
						|
     if (ptr.charAt(0) === '#') {
 | 
						|
       ptr = ptr.substring(1);
 | 
						|
     }
 | 
						|
     return JsonPointerLib._origParse(ptr);
 | 
						|
   }
 | 
						|
 | 
						|
   /**
 | 
						|
   * Creates a JSON pointer path, by joining one or more tokens to a base path.
 | 
						|
   *
 | 
						|
   * @param {string} base - The base path
 | 
						|
   * @param {string|string[]} tokens - The token(s) to append (e.g. ["name", "first"])
 | 
						|
   * @returns {string}
 | 
						|
   */
 | 
						|
   static join(base, tokens) {
 | 
						|
     // TODO: optimize
 | 
						|
     let baseTokens = JsonPointer.parse(base);
 | 
						|
     let resTokens = baseTokens.concat(tokens);
 | 
						|
     return JsonPointer.compile(resTokens);
 | 
						|
   }
 | 
						|
}
 | 
						|
 | 
						|
JsonPointerLib._origParse = JsonPointerLib.parse;
 | 
						|
JsonPointerLib.parse = JsonPointer.parse;
 | 
						|
 | 
						|
 | 
						|
Object.assign(JsonPointer, JsonPointerLib);
 | 
						|
export default JsonPointer;
 |