Skip to content

xerc/sourceopt

This branch is 2 commits behind lochmueller/sourceopt:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4cc8c70 · Jan 16, 2025
Oct 23, 2024
Nov 6, 2024
Jan 16, 2025
Jan 7, 2025
Oct 23, 2024
Oct 23, 2024
Jun 15, 2016
Oct 28, 2020
Nov 17, 2021
Jun 19, 2016
Oct 13, 2021
Nov 6, 2024
Oct 23, 2024
Jan 16, 2025
Oct 4, 2023

Repository files navigation

EXT:sourceopt

Build Status Scrutinizer Code Quality Code Coverage

  • SourceOpt : reformatting the (x)HTML output & removal of new-lines, comments and generator-info
  • RegExRep : search and replace strings using your regular expressions ; embrace regex and migrate now
  • SVGstore : combines all SVG selected within elements into one <symbol> file and replaces <img> by <use>

Version

>= 5.2.5

https://github.com/lochmueller/sourceopt/blob/173f7bd2a44b546844961ced1f0831371badd620/composer.json#L8-L9

<= 5.2.0 (legacy)

https://github.com/lochmueller/sourceopt/blob/6663a8a8512ba280bc7e8b8d38610146495a94ce/composer.json#L8-L9

Installation

composer require lochmueller/sourceopt
  • via TypoScript

    [constants]

    @import 'EXT:sourceopt/Configuration/TypoScript/constants'
    

    [setup]

    @import 'EXT:sourceopt/Configuration/TypoScript/setup'
    
  • via input device

    • add [EXT:sourceopt/Configuration/TypoScript] into Include static at Includes in Template

Configuration

Include the extension and go to the Constant Editor of a template where you find all options under PLUGIN

Performance

The PHP process need server performance, because there are several search/replace operations in the logic

Reference

Note: The following features are executed in reverse order

SourceOpt

TypoScript [constants] || prepend config. at [setup]

Property Type Description Default
sourceopt.enabled boolean Is the optimization enabled for this template 1
sourceopt.removeGenerator boolean Remove <meta name="generator" content="TYPO3 CMS"> 1
sourceopt.removeComments boolean Remove HTML-Comments 1
sourceopt.removeComments.keep array Spare these listed comments: Regular expressions that match comments that should not be removed. Very useful e.g. to keep the TYPO3SEARCH-Comments so indexed_search can work properly .10
sourceopt.removeComments.keep.10 string Spare TYPO3SEARCH-Comments from removal /^TYPO3SEARCH_/usi
sourceopt.headerComment string Your additional (appended) header comment [empty]
sourceopt.formatHtml integer Formats the code beautiful and easy readable. New lines and tabs are used in the usual way of illustrating the structure of an XML code.
Optionshttps://github.com/lochmueller/sourceopt/blob/2346673ee51d2b64308e1ddb1433cea2f37eafcb/Classes/Service/CleanHtmlService.php#L156-L161
4
sourceopt.formatHtml.tabSize integer Defines the size of the tabs used for formating. If blank one tab is used. If a number is specified the specified number of blank spaces is used instead. This will only work together with formatHtml [empty]
sourceopt.formatHtml.debugComment boolean Includes a comment at the end of the html source code that points the numbers of open html tags. This will only work together with formatHtml [empty]

RegEx Replace

TypoScript [setup] incl. stdWrap

config.replacer {
  search {
    1 = /(?<="|')\/?(fileadmin|typo3temp|uploads)/

    give-me-cherries = /fruit/

    wrapBoldly < tmp.find
    wrapBoldly.wrap = /|/
  }
  replace {
    1 = //cdn.tld/$1

    give-me-cherries = cherry

    wrapBoldly < tmp.repl
    wrapBoldly.wrap = <b>|</b>
  }
}

Note: both arrays will be ksort'ed in "natural order"

HowTo migrate

from jweiland/replacer : 1.4 - 2.x
  • regex replace config\.tx_(?:\w*replace\w*) to config.replacer
  • remove config.tx_replacer.enable_regex = 1
from maxserv/replacecontent 2013 - 2017
  • regex replace config\.tx_(?:\w*replace\w*) to config.replacer
from typo3-ter/ja_replacer 2009 - 2013 || phorax/ja-replacer 2016
composer install jweiland/replacer

& replace config.tx_ja_replacer to config.tx_replacer

  • regex replace config\.tx_(?:\w*replace\w*) to config.replacer
composer install jweiland/replacer

& replace plugin.fereplace.pairs to config.tx_replacer .. ah .. and one regex

  • search (\n\s*)(\d+)(?:{\s+|\.)old\s*=\s*([^\n]+).+?new\s*=\s*([^\n]+)
  • replace $1search.$2 = $3\n$1replace.$2 = $4
from typo3-ter/regex 2009
  • regex replace config\.regex to config.replacer
  • regex replace (?:\s)(\w+)\s*=\s* to search.$1 =
  • regex replace (\w+)\.replacement\s*=\s* to replace.$1 =
from any other tool or just for regex
  • regex replace (?:config|plugin)\.tx_any_other_tool to config.replacer
  • inside block search
    • regex replace \/ to \\/ (carefully)
    • regex replace \s*=\s*(.+) to = /$1/
  • inside block replace
    • regex replace \s*=\s*(.+) to = $1
    • consider a PR for conversion specifics

SVGstore

TypoScript [constants] || prepend config. at [setup]

Property Type Description Default
svgstore.enabled boolean Is the SVG extract & merge enabled for this template 1
svgstore.fileSize integer Maximum file size of a SVG to include (in [byte]) 50000

ToDo:

Packages

No packages published

Languages

  • PHP 100.0%