1.66.3 • Published 8 months ago

@penskemediacorp/twig-to-php-parser v1.66.3

Weekly downloads
438
License
ISC
Repository
github
Last release
8 months ago

Twig To PHP Parser

This package is intended to work with Larva Patterns to both parse patterns into a parent theme and a child theme. It expects the following directory structure:

|- pmc-consuming-theme/
	|- assets/
		|- build/
		|- src/
			|- patterns/
				|- 04-components/
				|- 05-objects/
				|- 06-algorithms/
		|- larva.config.js
	|- template-parts/
		|- patterns/

Very Important To Know

~When parsing includes, the parser looks for the @larva namespace, and will point includes to PMC_CORE_PATH when it finds it. Otherwise, includes will point to CHILD_THEME_PATH.~ This is not in effect yet. Everything is contained to the child theme.

The parser supports a very limited amount of Twig and relies on keywords in data names in order to parse escaping correctly. Please refer to the Confluence documentation for Twig authoring guidelines: https://confluence.pmcdev.io/x/JoGJAg

Usage

First, add an entry for the parser to larva.config.js:

module.exports = {
	// Other config

	parser: {
	}
}

The parser object supports the following configuration:

	parser: {
		twigDir: path.resolve( './new-path/to-twig/' ), // Default /theme/assets/src/patterns.
		phpDir: path.resolve( './new-path/to-php/' ), // Default /theme/template-parts/patterns.
		isUsingPlugin: true, // Default false.
	}

Then, run the script from the assets directory by executing the package binary like so:

./node_modules/.bin/twig-to-php-parser

Supported wp action in twig markup:

{{ wp_action( 'action_name', arg1, arg2, ... ) }}

would translate to

<?php do_action( 'action_name', $arg1, $arg2, ... ); ?>

How To

TODO: Standardize and improve code structure for future improvement

Add a new function

  • New function add must follow twig function syntax: function_name( p1, p2, ... )
  • The new function_name must be added to larva/lib/server.js to support twig linting

    		// Add custom function support for doing wp action: {{ function_name( ... ) }}
    		twing.addFunction(new TwingFunction('function_name',() => {
    			return Promise.resolve(''); // must return a promise result
    		}));
  • Add a new code block function/class to translate twig markup into php code block to twig-to-php-parse.php - Code block function should take a twig markup string as input - Return the translated php code block

    			function parse_my_new_function( $twig_markup ) {
    				// Code to parse and translate $twig_markup
    				return $twig_patterns;
    			}
      
    	- Modify function twig_to_php_parser and call to the new parser function to process $twig_markup_replace_main variable
    	
    			$twig_markup_replace_main = parse_my_new_function( $twig_markup_replace_main ) 
  • Add unit test - Add js function to index.js to load the php code - Add unit test to test the new parser function

1.66.2

8 months ago

1.66.3

8 months ago

1.64.0

1 year ago

1.65.0

12 months ago

1.66.0

10 months ago

1.66.1

9 months ago

1.63.0

1 year ago

1.62.0

1 year ago

1.61.0

1 year ago

1.60.1-alpha.0

1 year ago

1.60.0

1 year ago

1.59.0

2 years ago

1.56.0

2 years ago

1.58.2-alpha.5

2 years ago

1.55.0

2 years ago

1.57.0

2 years ago

1.28.1-alpha.141

2 years ago

1.52.0

2 years ago

1.58.1

2 years ago

1.58.0

2 years ago

1.58.3

2 years ago

1.58.2

2 years ago

1.53.0

2 years ago

1.54.0

2 years ago

1.51.0

2 years ago

1.49.0

2 years ago

1.50.0

2 years ago

1.44.0

2 years ago

1.48.0

2 years ago

1.48.1

2 years ago

1.45.1

2 years ago

1.45.0

2 years ago

1.46.0

2 years ago

1.46.1

2 years ago

1.47.1

2 years ago

1.47.0

2 years ago

1.43.0

2 years ago

1.26.0

3 years ago

1.27.1

3 years ago

1.24.1

3 years ago

1.28.0

3 years ago

1.14.0

3 years ago

0.7.0

3 years ago

0.6.4-develop.17

3 years ago

1.0.0

3 years ago

0.5.6

3 years ago

0.6.1

3 years ago

0.6.0

3 years ago

0.5.0

3 years ago

0.4.0

4 years ago

0.3.5

4 years ago

0.3.4

4 years ago

0.3.0

4 years ago

0.2.6-alpha.0

4 years ago

0.2.3

4 years ago

0.2.0

4 years ago

0.2.0-alpha.0

4 years ago

0.2.1-develop.0

4 years ago

0.1.20

4 years ago

0.1.20-alpha.0

4 years ago

0.1.19

4 years ago

0.1.10

4 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.2

5 years ago

0.1.0

5 years ago

8.14.26-alpha.0

5 years ago

8.14.24-alpha.0

5 years ago

8.14.23-alpha.0

5 years ago

8.14.19-alpha.0

5 years ago

8.14.16-alpha.0

5 years ago

8.14.15-alpha.0

5 years ago

8.14.14-alpha.0

5 years ago

8.14.13-alpha.0

5 years ago

8.14.12-alpha.0

5 years ago

8.14.11-alpha.0

5 years ago

8.14.10-alpha.0

5 years ago

8.14.9-alpha.0

5 years ago

8.14.6-alpha.0

5 years ago

8.14.8-alpha.0

5 years ago

8.14.7-alpha.0

5 years ago

8.14.5-alpha.0

5 years ago

8.14.4-alpha.0

5 years ago

8.14.3-alpha.0

5 years ago

8.14.2-alpha.0

5 years ago

8.14.1-alpha.0

5 years ago

8.14.0-alpha.0

5 years ago

8.13.0-alpha.0

5 years ago

8.12.1-alpha.0

5 years ago

8.12.0-alpha.0

5 years ago

8.11.1-alpha.0

5 years ago

8.11.0-alpha.0

5 years ago

8.10.0-alpha.0

5 years ago

8.9.0-alpha.0

5 years ago

8.8.1-alpha.0

5 years ago

8.8.0-alpha.0

5 years ago

8.7.0-alpha.0

5 years ago

8.7.1-alpha.0

5 years ago

8.6.0-alpha.0

5 years ago

8.6.1-alpha.0

5 years ago

8.5.4-alpha.0

5 years ago

8.5.3-alpha.0

5 years ago

8.5.2-alpha.0

5 years ago

8.5.1-alpha.0

5 years ago

8.5.0-alpha.0

5 years ago

8.4.0-alpha.0

5 years ago

8.3.0-alpha.0

5 years ago

8.2.0-alpha.0

5 years ago

8.1.1-alpha.0

5 years ago

8.1.0-alpha.0

5 years ago

8.0.0-alpha.0

5 years ago

7.0.0-alpha.0

5 years ago

7.0.1-alpha.0

5 years ago

6.12.1-alpha.0

5 years ago

6.12.0-alpha.0

5 years ago

6.11.2-alpha.0

5 years ago

6.11.1-alpha.0

5 years ago

6.11.0-alpha.0

5 years ago

6.10.2-alpha.0

5 years ago

6.10.1-alpha.0

5 years ago

6.9.0-alpha.0

5 years ago

6.7.0-alpha.0

5 years ago

6.10.0-alpha.0

5 years ago

6.8.0-alpha.0

5 years ago

6.6.0-alpha.0

5 years ago

6.5.0-alpha.0

5 years ago

6.3.0-alpha.0

6 years ago

6.2.0-alpha.0

6 years ago

6.1.1-alpha.0

6 years ago

6.1.0-alpha.0

6 years ago

6.0.0-alpha.0

6 years ago

5.5.1-alpha.0

6 years ago

5.4.2-alpha.0

6 years ago

4.1.1-alpha.0

6 years ago

4.0.1-alpha.0

6 years ago

4.0.0-alpha.0

6 years ago

3.5.0-alpha.0

6 years ago

3.3.0-alpha.0

6 years ago

3.0.0-alpha.0

6 years ago

2.11.0-alpha.0

6 years ago

2.9.0-alpha.0

6 years ago

2.8.0-alpha.0

6 years ago

2.6.0-alpha.0

6 years ago

2.5.2-alpha.0

6 years ago

2.5.0-alpha.0

6 years ago

2.4.0-alpha.0

6 years ago

2.3.2-alpha.0

6 years ago

2.1.0-alpha.0

6 years ago

2.0.0-alpha.0

6 years ago

1.10.0-alpha.0

6 years ago

1.9.0-alpha.0

6 years ago

1.8.0-alpha.0

6 years ago

1.7.0-alpha.0

6 years ago

1.6.0-alpha.0

6 years ago