package countlinesofcode include CountLinesOfCodeForm.feather include CountLinesOfCodeBehaviour.feather import java.util.regex.* /** * Counts lines of code, ignoring blank lines, comments and lines only containing only braces/brackets/parenthesis. * * NOTE. The current implementation does NOT build the results in a separate thread, * so a large codebase will hang the GUI, while the results are being accumulated. */ class CountLinesOfCode : SimpleComponent() { class var default_extensions = "" class var default_showFiles = true class var default_countHiddenFiles = false class var default_countHiddenFolders = false // ==== Register ==== override meth register() { val forFolder = SimpleFeatureSet( Context.FOLDER ).apply { val countLines = contextAction( "Count Lines of Code", ::countLines ) menus( MenuFeature( "Folder", countLines ) ) contextMenu( countLines ) } add( forFolder ) } // ==== Actions ==== func countLines( context : Context ) { promptInNewTab( context.value as File ) } // ==== API ==== func promptInNewTab( folder : File ) : Container { val form = CountLinesOfCodeForm( folder ) return promptInNewTab( form ) } }