Skip to content
This repository has been archived by the owner on Jan 25, 2024. It is now read-only.

Hotfix/generator manager #3

Merged
merged 16 commits into from
Aug 24, 2020
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ pubspec.lock
sketch-to-svg/node_modules/
# Conventional directory for build outputs
build/
TestingSketch/

# Directory created by dartdoc
doc/api/
Expand Down
Binary file removed TestingSketch/Getting Started Example.sketch
Binary file not shown.
1 change: 0 additions & 1 deletion TestingSketch/document.json

This file was deleted.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed TestingSketch/inspyred_demo.sketch
Binary file not shown.
1 change: 0 additions & 1 deletion TestingSketch/meta.json

This file was deleted.

This file was deleted.

This file was deleted.

Binary file removed TestingSketch/previews/preview.png
Binary file not shown.
1 change: 0 additions & 1 deletion TestingSketch/text-previews/text-previews-metadata.json

This file was deleted.

Binary file removed TestingSketch/text-previews/text-previews.pdf
Binary file not shown.
1 change: 0 additions & 1 deletion TestingSketch/user.json

This file was deleted.

4 changes: 1 addition & 3 deletions lib/controllers/interpret.dart
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ class Interpret {
log = Logger(runtimeType.toString());
this.projectName = projectName;
_interpret._pbSymbolLinkerService = PBSymbolLinkerService();
_interpret._generationManager = PBFlutterGenerator(PBFlutterWriter());
}

Future<PBIntermediateTree> interpretAndOptimize(SketchNodeTree tree) async {
Expand Down Expand Up @@ -101,7 +100,7 @@ class Interpret {
var currentContext = PBContext(
jsonConfigurations:
MainInfo().configurations ?? MainInfo().defaultConfigs);
currentContext.generationManager = _generationManager;

var parentComponent = item.root;
PBIntermediateNode parentVisualIntermediateNode;

Expand Down Expand Up @@ -197,7 +196,6 @@ class Interpret {
var currentContext = PBContext(
jsonConfigurations:
MainInfo().configurations ?? MainInfo().defaultConfigs);
currentContext.generationManager = _generationManager;

PBIntermediateNode parentVisualIntermediateNode;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,12 +166,13 @@ class FlutterProjectBuilder {

// Create single FlutterGenerator for all symbols
if (isSymbolsDir) {
flutterGenerator = await PBFlutterGenerator(pageWriter);
flutterGenerator = PBFlutterGenerator(pageWriter);
bodyBuffer = StringBuffer();
}

for (var intermediateItem in directory.items) {
var fileName = intermediateItem.node.name ?? 'defaultName';

var name = isSymbolsDir ? SYMBOL_DIR_NAME : fileName;
var symbolFilePath =
'${projectName}/lib/screens/${directoryName}/${name.toLowerCase()}.dart';
Expand All @@ -180,7 +181,7 @@ class FlutterProjectBuilder {
// TODO: Need FlutterGenerator for each page because otherwise
// we'd add all imports to every single dart page. Discuss alternatives
if (!isSymbolsDir) {
flutterGenerator = await PBFlutterGenerator(pageWriter);
flutterGenerator = PBFlutterGenerator(pageWriter);
}

// Add to cache if node is scaffold or symbol master
Expand Down
3 changes: 1 addition & 2 deletions lib/generation/generators/layouts/pb_column_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_inte
import '../pb_flutter_generator.dart';

class PBColumnGenerator extends PBLayoutGenerator {
final PBGenerationManager manager;
PBColumnGenerator(this.manager) : super('COLUMN');
PBColumnGenerator() : super('COLUMN');

@override
String generate(PBIntermediateNode source) {
Expand Down
3 changes: 1 addition & 2 deletions lib/generation/generators/layouts/pb_row_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_inte
import '../pb_flutter_generator.dart';

class PBRowGenerator extends PBLayoutGenerator {
final PBGenerationManager manager;
PBRowGenerator(this.manager) : super('ROW');
PBRowGenerator() : super('ROW');

@override
String generate(PBIntermediateNode source) {
Expand Down
4 changes: 1 addition & 3 deletions lib/generation/generators/layouts/pb_scaffold_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_inte
import '../pb_flutter_generator.dart';

class PBScaffoldGenerator extends PBGenerator {
final PBGenerationManager manager;

PBScaffoldGenerator(this.manager) : super('Scaffold');
PBScaffoldGenerator() : super('Scaffold');

@override
String generate(PBIntermediateNode source) {
Expand Down
3 changes: 1 addition & 2 deletions lib/generation/generators/layouts/pb_stack_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import 'package:parabeac_core/interpret_and_optimize/entities/layouts/stack.dart
import '../pb_flutter_generator.dart';

class PBStackGenerator extends PBGenerator {
final PBGenerationManager manager;
PBStackGenerator(this.manager) : super('Stack');
PBStackGenerator() : super('Stack');

@override
String generate(PBIntermediateNode source) {
Expand Down
3 changes: 1 addition & 2 deletions lib/generation/generators/layouts/pb_v_scrollview_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_inte
import '../pb_flutter_generator.dart';

class PBVerticalScrollViewGen extends PBLayoutGenerator {
final PBGenerationManager manager;
PBVerticalScrollViewGen(this.manager) : super('VERTICAL_SCROLLVIEW');
PBVerticalScrollViewGen() : super('VERTICAL_SCROLLVIEW');
// PBIntermediateColumnLayout
@override
String generate(PBIntermediateNode source) {
Expand Down
28 changes: 14 additions & 14 deletions lib/generation/generators/pb_flutter_generator.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'package:parabeac_core/generation/generators/pb_param.dart';
import 'package:parabeac_core/generation/generators/pb_widget_manager.dart';
import 'package:parabeac_core/generation/generators/util/pb_input_formatter.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/inherited_scaffold.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_instance.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_master_node.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart';
Expand All @@ -19,24 +20,22 @@ enum BUILDER_TYPE {
class PBFlutterGenerator extends PBGenerationManager {
var log = Logger('Flutter Generator');
PBFlutterGenerator(pageWriter) : super(pageWriter) {
imports = [];
body = StringBuffer();
}

List<PBParam> instanceVariables;

String generateStatefulWidget(String body, String name) {
name = PBInputFormatter.formatLabel(name,
isTitle: true, space_to_underscore: false);
var widgetName = name;
var constructorName = '_$name';
var buffer = StringBuffer();
buffer.write('class ${widgetName} extends StatefulWidget{\n'
'\tconst ${widgetName}() : super();\n'
'@override\n_${widgetName} createState() => _${widgetName}();\n}\n\n'
'class _${widgetName} extends State<${widgetName}>{\n'
'${generateInstanceVariables()}\n'
'${generateConstructor(widgetName)}\n'
'\n@override\nWidget build(BuildContext context){\n'
'${generateConstructor(constructorName)}\n'
'@override\nWidget build(BuildContext context){\n'
'return ${body};\n}\n}');
return generateImports() + buffer.toString();
}
Expand All @@ -45,10 +44,11 @@ class PBFlutterGenerator extends PBGenerationManager {
name = PBInputFormatter.formatLabel(name,
isTitle: true, space_to_underscore: false);
var buffer = StringBuffer();
var constructorName = '_$name';
buffer.write('class ${name} extends StatelessWidget{\n'
'\tconst ${name}({Key key}) : super(key : key);\n'
'${generateInstanceVariables()}\n'
'${generateConstructor(name)}\n'
'${generateConstructor(constructorName)}\n'
'\t@override\n\tWidget build(BuildContext context){\n\t return ${body};}}');
return generateImports() + buffer.toString();
}
Expand All @@ -57,8 +57,8 @@ class PBFlutterGenerator extends PBGenerationManager {
if (constructorVariables == null || constructorVariables.isEmpty) {
return '';
}
List<PBParam> variables;
List<PBParam> optionalVariables;
List<PBParam> variables = [];
List<PBParam> optionalVariables = [];
constructorVariables.forEach((param) {
// Only accept constructor variable if they are
// part of the variable instances
Expand Down Expand Up @@ -96,10 +96,10 @@ class PBFlutterGenerator extends PBGenerationManager {
/// Formats and returns imports in the list
String generateImports() {
StringBuffer buffer = StringBuffer();
buffer.write('import \'package:flutter/material.dart\';');
buffer.write('import \'package:flutter/material.dart\';\n');

for (String import in imports) {
buffer.write('import \'$import\';');
buffer.write('import \'$import\';\n');
}
return buffer.toString();
}
Expand All @@ -120,6 +120,7 @@ class PBFlutterGenerator extends PBGenerationManager {
rootNode.builder_type = type;

rootNode.generator.manager = this;

var gen = rootNode.generator;

if (gen != null) {
Expand Down Expand Up @@ -149,17 +150,16 @@ class PBFlutterGenerator extends PBGenerationManager {
}

@override
String addDependencies(String packageName, String version) {
void addDependencies(String packageName, String version) {
pageWriter.addDependency(packageName, version);
}

@override
void addInstanceVariable(PBParam param) => instanceVariables.add(param);

@override
void addConstructorVariable(PBParam param) => constructorVariables.add(param);

@override
void addToConstructor(PBParam parameter) {
// TODO: implement addToConstructor
}
void addImport(String value) => imports.add(value);
}
22 changes: 12 additions & 10 deletions lib/generation/generators/pb_flutter_writer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,22 @@ class PBFlutterWriter implements PBPageWriter {

void submitDependencies(String yamlAbsPath) async {
var line = 0;
var readYaml = File(yamlAbsPath).readAsLinesSync();
if (dependencies.isNotEmpty) {
var readYaml = File(yamlAbsPath).readAsLinesSync();

line = readYaml.indexOf('dependencies:') + 1;
if (line > 0) {
dependencies.forEach((packageName, version) {
readYaml.insert(++line, '${packageName}: ${version}');
});
line = readYaml.indexOf('dependencies:');
if (line > 0) {
dependencies.forEach((packageName, version) {
readYaml.insert(++line, ' ${packageName}: ${version}');
});

var writeYaml = File(yamlAbsPath).openWrite(mode: FileMode.write);
var writeYaml = File(yamlAbsPath).openWrite(mode: FileMode.write);

for (var i = 0; i < readYaml.length; ++i) {
writeYaml.writeln(readYaml[i]);
for (var i = 0; i < readYaml.length; ++i) {
writeYaml.writeln(readYaml[i]);
}
await writeYaml.flush();
}
await writeYaml.flush();
}
}
}
19 changes: 10 additions & 9 deletions lib/generation/generators/pb_widget_manager.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import 'package:parabeac_core/generation/generators/visual-widgets/pb_text_gen.d
import 'package:parabeac_core/interpret_and_optimize/helpers/pb_gen_cache.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart';

import 'pb_param.dart';

/**
* The caller of the method `generate()` is going to look at the configurations and decide if the page is
* going to become `STATEFUL_WIDGET` or `STATELESS_WIDGET`.
Expand All @@ -27,31 +29,30 @@ abstract class PBGenerationManager {
// PBContext context;

///* Keep track of the imports the current page may have
List<String> imports;
List<String> imports = [];

///* Keep track of the current page body
StringBuffer body;

///* Keep track of the instance variable a class may have
/// I think the following three may be only for Flutter (?)

List<PBParam> constructorVariables;
Map<String, String> dependencies;
List<PBParam> constructorVariables = [];
List<PBParam> instanceVariables = [];
Map<String, String> dependencies = {};

PBGenerationManager(
this.pageWriter,
);
void addImport(String uuid, String absPath) {
PBGenCache().addToCache(uuid, absPath);
}

void addToConstructor(PBParam parameter);
void addImport(String value);

String generate(PBIntermediateNode rootNode, {type});

String addDependencies(String packageName, String version);
void addDependencies(String packageName, String version);

String getPath(String uuid) => PBGenCache().getPath(uuid);

void addConstructorVariable(PBParam param);

void addInstanceVariable(PBParam variable);
}
7 changes: 3 additions & 4 deletions lib/generation/generators/plugins/pb_plugin_node.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@ import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_visu
import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart';
import 'package:parabeac_core/interpret_and_optimize/value_objects/point.dart';

abstract class PBNakedPluginNode extends PBVisualIntermediateNode {
abstract class PBEgg extends PBVisualIntermediateNode {
/// The allow list semantic name to detect this node.
String semanticName;

final String UUID;

PBNakedPluginNode(
Point topLeftCorner, Point bottomRightCorner, PBContext currentContext,
PBEgg(Point topLeftCorner, Point bottomRightCorner, PBContext currentContext,
{this.UUID})
: super(topLeftCorner, bottomRightCorner, currentContext, UUID: UUID);

Expand All @@ -20,7 +19,7 @@ abstract class PBNakedPluginNode extends PBVisualIntermediateNode {
List<PBIntermediateNode> layoutInstruction(List<PBIntermediateNode> layer) =>
layer;

PBNakedPluginNode generatePluginNode(
PBEgg generatePluginNode(
Point topLeftCorner, Point bottomRightCorner, SketchNode originalRef);

void extractInformation(SketchNode incomingNode);
Expand Down
3 changes: 1 addition & 2 deletions lib/generation/generators/symbols/pb_instancesym_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_inte
import 'package:quick_log/quick_log.dart';

class PBSymbolInstanceGenerator extends PBGenerator {
final PBGenerationManager manager;
PBSymbolInstanceGenerator(this.manager) : super('SYMBOL_INSTANCE');
PBSymbolInstanceGenerator() : super('SYMBOL_INSTANCE');

var log = Logger('Symbol Instance Generator');

Expand Down
4 changes: 1 addition & 3 deletions lib/generation/generators/symbols/pb_mastersym_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ import 'package:quick_log/quick_log.dart';
import '../pb_flutter_generator.dart';

class PBMasterSymbolGenerator extends PBGenerator {
final PBFlutterGenerator manager;

final _parametersType = {
'image': 'var',
'stringValue': 'var',
Expand All @@ -18,7 +16,7 @@ class PBMasterSymbolGenerator extends PBGenerator {
};
List<PBSymbolMasterParameter> _parameterDefinition = [];

PBMasterSymbolGenerator(this.manager) : super('PBSymbolMaster');
PBMasterSymbolGenerator() : super('PBSymbolMaster');

///Generating the parameters of the symbol master, keeping [definitions] so
///we can replace the generic names of the paramters by that of the real overridable node's name.
Expand Down
4 changes: 1 addition & 3 deletions lib/generation/generators/visual-widgets/pb_align_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@ import 'package:parabeac_core/interpret_and_optimize/entities/injected_align.dar

class PBAlignGenerator extends PBGenerator {
var log = Logger('Align Generator');
PBAlignGenerator(this.manager) : super('ALIGN');

final PBGenerationManager manager;
PBAlignGenerator() : super('ALIGN');

@override
String generate(PBIntermediateNode source) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_inte

class PBContainerGenerator extends PBGenerator {
String color;
final PBGenerationManager manager;
PBContainerGenerator(this.manager) : super('CONTAINER');

PBContainerGenerator() : super('CONTAINER');

@override
String generate(PBIntermediateNode source) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@ import '../pb_widget_manager.dart';

class PBFlexibleGenerator extends PBGenerator {
var log = Logger('Flexible Generator');
PBFlexibleGenerator(this.manager) : super('FLEXIBLE');

final PBGenerationManager manager;
PBFlexibleGenerator() : super('FLEXIBLE');

@override
String generate(PBIntermediateNode source) {
Expand Down
3 changes: 1 addition & 2 deletions lib/generation/generators/visual-widgets/pb_padding_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ import '../pb_generator.dart';
import '../pb_widget_manager.dart';

class PBPaddingGen extends PBGenerator {
final PBGenerationManager manager;
PBPaddingGen(this.manager) : super('PADDING');
PBPaddingGen() : super('PADDING');

String relativePadding(BUILDER_TYPE type, bool isVertical, double value) {
if (type != null) {
Expand Down
Loading