diff --git a/Makefile b/Makefile index 39fe39a..cbb4ae2 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -all: clean-container build-builders build-linux-debug-container +all: build-container clean-container build-builders build-linux-debug-container DB=~/.local/share/com.example.d4rt_formulas/d4rt_formulas/formulas.sqlite @@ -10,17 +10,18 @@ clean: flutter clean [ -f $(DB) ] && rm $(DB) -clean-container: build-container +clean-container: + rm -r .build-container-cache ./flutterw clean - rm .build-container-cache -pub-get-container: build-container + +pub-get-container: ./flutterw pub get test: ./flutterw test -build-builders: build-container +build-builders: ./flutterw pub run build_runner build --delete-conflicting-outputs build-android-release-container: diff --git a/assets/formulas/it-networking.d4rt b/assets/formulas/it-networking.d4rt index 3baaac3..14fa848 100644 --- a/assets/formulas/it-networking.d4rt +++ b/assets/formulas/it-networking.d4rt @@ -15,23 +15,25 @@ The network address is calculated by applying the subnet mask to zero out the ho {"name": "hostIP", "unit": "string"} ], "output": {"name": "network", "unit": "string"}, - "d4rtCode": r"""var parts = hostIP.split('/'); -var ip = parts[0]; -var mask = int.parse(parts[1]); -var octets = ip.split('.').map((e) => int.parse(e)).toList(); -var hostBits = 32 - mask; -var shiftAmount = hostBits; -var networkValue = 0; -for (var i = 0; i < 4; i++) { - networkValue = (networkValue << 8) | octets[i]; -} -networkValue = (networkValue >> shiftAmount) << shiftAmount; -var networkOctets = []; -for (var i = 0; i < 4; i++) { - networkOctets.insert(0, networkValue & 0xFF); - networkValue = networkValue >> 8; -} -network = networkOctets.join('.') + '/' + mask.toString();""", + "d4rtCode": r""" + var parts = hostIP.split('/'); + var ip = parts[0]; + var mask = int.parse(parts[1]); + var octets = ip.split('.').map((e) => int.parse(e)).toList(); + var hostBits = 32 - mask; + var shiftAmount = hostBits; + var networkValue = 0; + for (var i = 0; i < 4; i++) { + networkValue = (networkValue << 8) | octets[i]; + } + networkValue = (networkValue >> shiftAmount) << shiftAmount; + var networkOctets = []; + for (var i = 0; i < 4; i++) { + networkOctets.insert(0, networkValue & 0xFF); + networkValue = networkValue >> 8; + } + network = networkOctets.join('.') + '/' + mask.toString(); + """, "tags": ["networking", "ip", "subnetting", "cidr", "network"] } ] diff --git a/assets/formulas/networking.d4rt b/assets/formulas/networking.d4rt deleted file mode 100644 index ceda27e..0000000 --- a/assets/formulas/networking.d4rt +++ /dev/null @@ -1,83 +0,0 @@ -[ - // IP Subnet and Broadcast Calculator - { - "name": "IP Subnet and Broadcast", - "description": r""" -Calculates the network (subnet) address and broadcast address for an IPv4 address with CIDR notation. - -**Input format:** `ip_address/prefix` where: -- `ip_address`: IPv4 address in dotted decimal notation (e.g., `192.168.1.100`) -- `prefix`: CIDR prefix length (1-30) or subnet mask in dotted notation (e.g., `24` or `255.255.255.0`) - -**Output:** -- `subnet`: Network address in dotted decimal notation -- `broadcast`: Broadcast address in dotted decimal notation - -**Examples:** -- Input: `192.168.1.100/24` → Subnet: `192.168.1.0`, Broadcast: `192.168.1.255` -- Input: `10.0.0.50/8` → Subnet: `10.0.0.0`, Broadcast: `10.255.255.255` -- Input: `172.16.5.100/16` → Subnet: `172.16.0.0`, Broadcast: `172.16.255.255`""", - "input": [ - {"name": "ipWithMask", "unit": "scalar"} - ], - "output": {"name": "subnet", "unit": "scalar"}, - "d4rtCode": """ - var input = ipWithMask.toString(); - var slashIndex = input.indexOf('/'); - if (slashIndex == -1) { - subnet = 'error: no / found'; - broadcast = ''; - } else { - var ipPart = input.substring(0, slashIndex).trim(); - var maskPart = input.substring(slashIndex + 1).trim(); - - // Parse IP address - var ipParts = ipPart.split('.'); - if (ipParts.length != 4) { - subnet = 'error: invalid IP'; - broadcast = ''; - } else { - var octet1 = int.parse(ipParts[0]); - var octet2 = int.parse(ipParts[1]); - var octet3 = int.parse(ipParts[2]); - var octet4 = int.parse(ipParts[3]); - - // Convert IP to 32-bit integer - var ipInt = (octet1 << 24) | (octet2 << 16) | (octet3 << 8) | octet4; - - // Parse mask (CIDR prefix or dotted notation) - int maskInt; - if (maskPart.contains('.')) { - var maskParts = maskPart.split('.'); - var m1 = int.parse(maskParts[0]); - var m2 = int.parse(maskParts[1]); - var m3 = int.parse(maskParts[2]); - var m4 = int.parse(maskParts[3]); - maskInt = (m1 << 24) | (m2 << 16) | (m3 << 8) | m4; - } else { - var prefix = int.parse(maskPart); - maskInt = prefix == 0 ? 0 : (-1 << (32 - prefix)); - } - - // Calculate subnet and broadcast - var subnetInt = ipInt & maskInt; - var broadcastInt = subnetInt | (~maskInt & 0xFFFFFFFF); - - // Convert back to dotted notation - var s1 = (subnetInt >> 24) & 0xFF; - var s2 = (subnetInt >> 16) & 0xFF; - var s3 = (subnetInt >> 8) & 0xFF; - var s4 = subnetInt & 0xFF; - subnet = '\$s1.\$s2.\$s3.\$s4'; - - var b1 = (broadcastInt >> 24) & 0xFF; - var b2 = (broadcastInt >> 16) & 0xFF; - var b3 = (broadcastInt >> 8) & 0xFF; - var b4 = broadcastInt & 0xFF; - broadcast = '\$b1.\$b2.\$b3.\$b4'; - } - } - """, - "tags": ["networking", "ip", "subnet", "broadcast", "cidr"] - } -] diff --git a/lib/defaults/default_corpus.dart b/lib/defaults/default_corpus.dart index 10057f1..b9c095c 100644 --- a/lib/defaults/default_corpus.dart +++ b/lib/defaults/default_corpus.dart @@ -63,7 +63,6 @@ Future createDefaultCorpus() async{ "assets/formulas/materials_elasticity.d4rt", "assets/formulas/medical_and_bio.d4rt", "assets/formulas/misc_math.d4rt", - "assets/formulas/networking.d4rt", "assets/formulas/optics.d4rt", "assets/formulas/thermodynamics.d4rt", "assets/formulas/trigonometry.d4rt",