Skip to content

Latest commit

 

History

History
155 lines (146 loc) · 7.75 KB

TODO.md

File metadata and controls

155 lines (146 loc) · 7.75 KB

Todo

general

  • upload the functional version

  • upload the FBP version

  • fix sortby

  • improve sortby in order to assign the smallest PlanckId to the most used Originals

  • change the value objects and iterator to more functional

  • have breakpoints for testing

  • write README.md

  • format the Flo a little better

  • put networks json into the corresponding files

  • put the json into NoFlo for graphs

  • full Documentation

  • separate into files

  • format the output: 1) Input 2) Output 3) Keys used (Original + new/minified/PlanckId

  • output the formatted output only once, at the end

  • fix debug connection

  • change some of the terms using Identities into Plancks & Originals

  • remove unnessecary comments

  • should put Realm as its own lib

  • should put utilities in its own support library and wrap functions in if !func exists

  • autoload the Components

  • put on packagist

  • automatically scale the creation of the PlanckCollectionBuilder

  • enable the full range of PlanckBuilder in the meantime

  • svg badges for github project

  • upgrade the Planck to use more UPPERCASE letters

  • add Inflector on the FloComponent to make an out and in port automatically on connect and disconnect (example: function onOutExamplePortName() and function onInExamplePortName and function onExamplePortDisconnect()

  • move ReadRepeater, ReadRepeaterFinal, StyleRegexRepeater to /Core/

  • create Extract Component

  • remove need for ReadRepeater and use Extract,

  • add a .dev/non-minified version of the contents and link to it in the comments

  • change FloReplace using identities in port to map

  • refactor the FloComponent and split inflector responsibilities to another class, possibly as Middleware for the Network - it would be easier if phpflo did not depend on eventement which uses call_user_func_array with the arguments, otherwise additional arguments could be passed in to use for inflecting.

  • addPort related functions should also be moved to another class which can be injected via DI

  • RegexInOut::get remove the array to string and leave that up to a dedicated Component (ArrayToString)

  • [PlanckId\Utilities\Callback] add call_user_func_array

  • ::isMarkup, ::isScript, ::isStyle, ::hasStyle, ::hasMarkup, ::hasScript, for identifying the content

  • a method to define the type (script, style, markup) when it is passed in

  • DIC in Example

  • split the [Regex/] into sub modules, especially for JavaScript when matching non-vanilla/frameworks+libraries

  • fileType for incoming content

  • refactor & rename ContentAndMap

  • extract [$languages] from $content and replace|extract|extractAndReplace [$z] (thanks Bad_Advice_Cat for these next 4)

  • flush out the index.php page, remove $_REQUEST use

  • change OutputFinal to emitt an event so the Client can register their own listener to deal with the output

  • put the OutputFinal output as a value object, possibly attaching the correct Component for outputting in different formats (json, html) and on different systems (cli, browser)

  • implement debugging on/off

testing

  • ~write it BDD
  • figure out how to test best
  • output result to file, WriteFile
  • clean up the piping, do reusable instead of many outs & ins
  • write initial tests
  • separate tests into different .features
  • make the tests all pass
  • put the tests into bdd .feature
  • integrate travis
  • if travis does not run bdd easily, run with PHPUnit
  • in the tests, make sure it works WITHOUT inline scripts or styles
  • test and revise for 500+ ids, remove the unique part for testing?
  • extend PHPFlo tests for my extensions
  • write tests for every Component.
  • fully implement & test Component errors
  • fix the sub test directory the test makes Scenario: Extract and Minify Markup and Style Selectors from Contents using Filter
  • test with Styles, but no Scripts. Test with Scripts, but no Styles. Test with Styles & Scripts, but no other Markup.
  • test to show ensure that longest is first for the sorting originals
  • gzip comparison
  • create [PlanckId\Flo\ExtendedFloNetwork]
  • DI in [PlanckId\Flo\ExtendedFloNetwork]
  • create [Planck\Flo\ExtendedFloPort] & [Planck\Flo\ExtendedFloArrayPort]to use ::isAttached
  • test ^
  • ask about whether it should use ::isAttached, or if it should create multiple Components
  • change Run.php to use PHPUnit tests which run Behat & eliminate that duplication
  • change TestingContentOutput to use ArrayToString
  • add the additional PHPunit tests into cucumber syntax for behat

(thanks simensen)

  • move behat to require-dev
  • put bin/ test files in .gitignore

js

  • JavaScript v0.1
  • JavaScript extracting
  • JavaScript matching block
  • JavaScript replacing block
  • JavaScript matching External (src=) Component
  • JavaScript testing ^
  • JavaScript Reading External File
  • JavaScript testing ^
  • FeatureScriptExtract
  • JavaScript testing replacing isolated
  • JavaScript testing replacing grouped

markup

  • Markup v0.1
  • Markup extracting
  • Markup matching classes
  • Markup matching identities
  • Markup replacing & matching contextually
  • Markup replacing & matching more contextually (php)
  • Markup replacing classes
  • Markup replacing identities
  • Markup replacing other attributes
  • Markup testing extraction isolated
  • Markup testing extraction grouped
  • Markup testing replacing isolated
  • Markup testing replacing grouped

css

  • Style v0.1
  • Style extracting
  • Style matching block
  • Style replacing block
  • Style matching External (href=) Component
  • testing ^
  • Style Reading External File
  • Style testing ^

feature

  • write core js matching (determine if it's vanilla js) & plugins|strategies for other syntax
  • ^ with css
  • be able to paste in JS, CSS, OR Script and it identify and minify accordingly
  • add back in sorting by which Selector is used most, not just the length
  • selector regex match - not followed by anything except specific characters, for example, it was matching .5 in background-color(0.5)
  • #[keyword-todo] doesn't account for keywords & content
  • add client defined keywords & client defined blacklisted Originals.
  • add files, blacklist and whitelist other files
  • be able to pass in website urls
  • be able to download a zip from the processed website url
  • use FlySystem for files
  • automatically output the json network graphs to their respective files
  • set it to only extract from Markup, then replace only those in Script & Style
  • have FeatureContext use & test [Planck\Planck]
  • add tests extracting only identities or classes to the app/
  • add support for Twig & other templating systems (thanks @xsanisty)

possibly in the future

  • could redo using complete OOP, also could use EDD
  • content could have a ReadContent & WriteContent
  • could fully implement ReadContent & WriteContent
  • find why ArrayPort on the out port did not work (specifically, in FloReplace)
  • FlattenClasses component, the nodes that have to be given string aliases each time would be much easier in NoFloJs
  • all Regex classes extend RegexInOut (or its subclasse) so they simply define the regex
  • make more dynamic for PLUGIN ability such as attributes
  • variable length arguments in FloComponent
  • implement StaticContent in an alternate way
  • use phpDaemon
  • extend or revise how to do debugging ports instead of isConnected which is seemingly on the wrong side of the pipe.
  • each of the Regex could be a flo component that calls a RegexComponent and passes in the regex